2010-08-01 19 views

Respuesta

15

hay un método contains para las listas, por lo que debería ser capaz de hacer:

Arrays.asList(yourArray).contains(yourObject); 

Advertencia: esto podría no hacer lo que usted (o yo) espera, véase el comentario de Tom continuación.

+2

Eso es bastante corto, pero este caso de uso es lo suficientemente común como para que realmente deberían haber agregado una función al lenguaje – Casebash

+2

Tenga cuidado de no usar eso con matrices primitivas. –

+0

@Tom: ¿Por qué no? ¿No funciona? – Casebash

5

Utilice un bucle for. No hay nada integrado en la matriz. O cambie a una clase de colección java.util.

7

Es posible que desee considerar el uso de una implementación Collection en lugar de una matriz plana.

La interfaz Collection define un método contains(Object o), que devuelve true/false.

ArrayList implementación define indexOf(Object o), que proporciona un índice, pero ese método no está en todas las implementaciones de colecciones.

Ambos métodos requieren implementaciones propias del método equals(), y es probable que quieren un hashCode() método implementado correctamente en caso de que esté utilizando un hash basado Collection (por ejemplo HashSet).

3

Puede usar uno de los muchos métodos Arrays.binarySearch(). Tenga en cuenta que la matriz debe ordenarse primero.

+1

Esa es una opción, solo los elementos de la matriz son comparables. –

+2

Solo podemos suponer que este es el caso, p. una matriz de Ints, Strings, etc. Siempre puede proporcionar un ['Comparator'] personalizado (http://download.oracle.com/javase/6/docs/api/java/util/Comparator.html) para ordenar y buscar si es necesario. – krock

+0

difícil de creer que no hay Arrays.search ... rogerdpack

7

Con Java 8, se puede hacer esto:

int[] haystack = {1, 2, 3}; 
int needle = 3; 

boolean found = Arrays.stream(haystack).anyMatch(x -> x == needle); 

que había necesidad de hacer

boolean found = Arrays.stream(haystack).anyMatch(x -> needle.equals(x)); 

si está trabajando con objetos.

Cuestiones relacionadas