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 № 1Puedes 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
}