2011-01-14 11 views

Respuesta

33
static final List<String> fruit = Arrays.asList("APPLE", "ORANGES", "GRAPES"); 

if (fruit.contains(fruitname)) 

Si su lista era mucho más grande, un conjunto sería más eficiente.

static final Set<String> fruit = new HashSet<String>(
     Arrays.asList("APPLE", "ORANGES", "GRAPES", /*many more*/)); 
+0

La fuerza también lo convierten en un 'Set'. Parece más apropiado. – wds

+0

@wds No existe realmente un método Arrays.asset, y si este es el único uso para la colección, el paso de conversión adicional (a Set) no parece valer la pena. – extraneon

+0

No es para una lista con tres entradas. Para más entradas, puede valer la pena. –

2

es Arrays.binarySearch ¿Qué es lo que está buscando?

String [] fruits = new String[]{"APPLE", "ORANGES", "GRAPES"}; 
Arrays.sort(fruits); // binarySearch requires that the array is sorted 

if (Arrays.binarySearch(fruits), fruitname) >= 0) { 
    // found! 
} 

Y por supuesto la tan confiable Apache Commons ArrayUtils:

if (ArrayUtils.contains(new String[]{"APPLE", "ORANGES", "GRAPES"}, fruitname){ 
    // found 
} 

sabía que iba a ser algo en Apache Commons :)

+3

la búsqueda binaria asume que la matriz está ordenada, recuerdo que O viene después de G;) –

+0

Me di cuenta :) Así que agregué un ordenamiento. Aunque me gusta más tu solución (ese es el voto positivo :) – extraneon

+0

@peter: hay un Array.sort() allí;) – fasseg

6

esté completo el uso de Google-colecciones/guayaba:

import com.google.common.collect.Sets; 

static final Set<String> fruit = Sets.newHashSet("APPLE", "ORANGES", "GRAPES"); 

if (fruit.contains(fruitname)) 

o utilizando el avión antiguas clases jdk:

static final Set<String> fruit = new HashSet<String>(Arrays.asList("APPLE", "ORANGES", "GRAPES")); 
0

Si tiene Conjunto, Lista, Mapa de frutas que todas tienen el mismo elemento principal: Colección, puede probar este ejemplo.

String fruitName = "Orange"; 
Collection<String> fruits = ... // set of fruits 
if (fruits.contains(fruitName)) { 
    ... 
} 

Pero se debe prestar atención en mayúsculas y minúsculas (naranja! = Naranja)

Cuestiones relacionadas