/ / Android - Verifique si existe un valor en un Array - java, arrays

Android: compruebe si existe un valor en una matriz - java, matrices

Tengo una matriz llamada "bob" que contiene valores.

String[] bob = { "this", "is", "a", "really", "silly", "list" };

¿Cómo puedo saber si existe un valor "tonto" en la matriz denominada bob sin iterarla?

Respuestas

99 para la respuesta № 1

Puedes usar List#contains método. Para eso necesitas convertir tu array a una lista. Puedes usar Arrays#asList() método para que:

String[] bob = { "this", "is", "a", "really", "silly", "list" };

if (Arrays.asList(bob).contains("silly")) {
// true
}

6 para la respuesta № 2

Convertir la matriz a la lista utilizando estática Arrays.asList(T) y verifique con List.contains(Object) para comprobar si un objeto existe en la colección retuned.

    String[] bob = { "this", "is", "a", "really", "silly", "list" };
System.out.println(Arrays.asList(bob).contains("silly"));

Sin embargo, la forma tradicional sería iterar sobre la matriz y verificar cada elemento utilizando equals ().


4 para la respuesta № 3

Si va a comprobarlo mucho, puede que le resulte más eficiente usar un HashSet:

String[] bob = { "this", "is", "a", "really", "silly", "list" };
Set<String> silly = new HashSet<String>(Arrays.asList(bob));
boolean isSilly = silly.contains("silly");

1 para la respuesta № 4

Aquí hay una manera fácil de hacerlo:

    ArrayList list = new ArrayList(Arrays.asList(bob ));
if (list.contains("silly")) {
// my array has silly !
}

La idea es convertir su Array en un objeto ListArray. pero consumiría memoria adicional, así que asegúrese de que valga la pena antes de usarla.

Editar

Si está buscando un rendimiento y guardando memoria, puede utilizar el algoritmo de búsqueda binario en su lugar: De esta manera no tienes que asignar nuevos objetos:

Arrays.sort(array)
int value = Arrays.binarySearch(array, "silly");
if (value != -1) {
// my array has silly !
}

0 para la respuesta № 5

El código anterior no funciona para mí. Tipos primitivos no permitidos, supongo.

Tengo que hacerlo manualmente:

char[] charlist = {"a","b","c","d"}
boolean arraycontains = false;
char tester = "c";
for (int y=0;y<charlist.length;y++){
if (charlist[y] == character) {
arraycontains = true;
break;
}
}

if (arraycontains) {
//true. array contains the tester;
}
else {
//false. array does not contain the tester;
}

:)


-1 para la respuesta № 6

Probablemente será más eficiente declarar su matriz como Collection en primer lugar, o conviértalo en uno si no es usted el que lo declara en lugar de llamar Arrays.asList() varias veces:

Collection<String> bob = Arrays.asList("this", "is", "a", "really", "silly", "list");

if (bob.contains("silly")) {
//do stuff
}