2010-01-25 3 views
25

He estado trabajando con Java/Python. Ahora en esta situación quiero comprobar si el elemento está en la lista y hacer cosas ...Un liner para verificar si el elemento está en la lista

Python dice:

if "a" in ["a", "b", "c"]: 
    print "It's there!" 

¿Se Java proporciona ningún chiste para este lugar de crear ArrayList/Set o estructura de datos similar en pasos y agregando elementos a ella?

Gracias

Respuesta

56

Use Arrays.asList:

if(Arrays.asList("a","b","c").contains("a")) 
+2

¿Esto no crea una lista? – danben

+2

La lista es solo una envoltura alrededor de la matriz, por lo que es muy liviana. Por supuesto, "contiene" simplemente va a terminar iterando a través de la matriz, entonces, ¿cuál es el punto? –

+0

@danben seguro, pero es un trazador de líneas apropiado. –

7

Hay un boolean contiene método (Object obj) dentro de la interfaz de lista.

Usted debe ser capaz de decir:

if (list.contains("a")) { 
    System.out.println("It's there"); 
} 

De acuerdo con la javadoc:

 
boolean contains(Object o)

Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that (o==null ? e==null : o.equals(e)).

1

Puede utilizar java.util.Arrays.binarySearch para encontrar un elemento en una matriz o para verificar su existencia:

import java.util.Arrays; 
... 

char[] array = new char[] {'a', 'x', 'm'}; 
Arrays.sort(array); 
if (Arrays.binarySearch(array, 'm') >= 0) { 
    System.out.println("Yes, m is there"); 
} 

Tenga en cuenta que para que binarySearch funcione correctamente, la matriz debe ordenarse. De ahí la llamada a Arrays.sort() en el ejemplo. Si sus datos ya están ordenados, no necesita hacer eso. Por lo tanto, esto no es estrictamente una línea si primero debe ordenar su matriz. Desafortunadamente, Arrays.sort() no devuelve una referencia a la matriz, por lo que no es posible combinar sort y binarySearch (es decir, Arrays.binarySearch (Arrays.sort (myArray), clave)) no funciona.

Si puede pagar la asignación adicional, el uso de Arrays.asList() parece más limpio.

0

Si realmente quiere un chiste sin ningún tipo de colecciones, OK, que puede tener uno:?

for(String s:new String[]{"a", "b", "c")) if (s.equals("a")) System.out.println("It's there"); 

* sonrisa *

(¿No es fea Por favor, no lo use en código real)

2

Puede intentar usar cadenas con un separador que no aparece en ningún elemento.

if ("|a|b|c|".contains("|a|")) 
7

En JDK7:

if ({"a", "b", "c"}.contains("a")) { 

Suponiendo que el proyecto de colecciones de monedas literales proyecto pasa por.

+0

Ya es hora. Espero que esto sea adoptado. Estoy cansado de la verbosidad de Java – I82Much

+1

Los 13 caracteres adicionales probablemente no te maten. –

Cuestiones relacionadas