J'ai un tableau nommé "bob" qui contient des valeurs.
String[] bob = { "this", "is", "a", "really", "silly", "list" };
Comment savoir si une valeur "idiote" existe dans le tableau nommé bob sans itérer à travers celui-ci?
Vous pouvez utiliser List#contains
méthode. Pour cela, vous devez convertir votre tableau en liste. Vous pouvez utiliser Arrays#asList()
method pour que:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
if (Arrays.asList(bob).contains("silly")) {
// true
}
Convertissez le tableau en liste à l'aide de Arrays.asList(T)
statique et vérifiez avec List.contains(Object)
pour vérifier si un objet existe dans la collection renvoyée.
String[] bob = { "this", "is", "a", "really", "silly", "list" };
System.out.println(Arrays.asList(bob).contains("silly"));
La méthode traditionnelle consisterait toutefois à parcourir le tableau et à vérifier chaque élément en utilisant equals ().
Si vous allez le vérifier beaucoup, vous trouverez peut-être plus efficace d'utiliser un HashSet
:
String[] bob = { "this", "is", "a", "really", "silly", "list" };
Set<String> silly = new HashSet<String>(Arrays.asList(bob));
boolean isSilly = silly.contains("silly");
Voici un moyen facile de le faire:
ArrayList list = new ArrayList(Arrays.asList(bob ));
if (list.contains("silly")) {
// my array has silly !
}
L'idée est de convertir votre tableau en un objet ListArray . Mais cela consommerait plus de mémoire, assurez-vous que cela en vaut la peine avant de l'utiliser.
Modifier
Si vous recherchez une performance et que vous économisez de la mémoire, vous pouvez utiliser à la place une recherche binaire, comme suit:
Arrays.sort(array)
int value = Arrays.binarySearch(array, "silly");
if (value != -1) {
// my array has silly !
}
le code ci-dessus ne fonctionne pas pour moi. types primitifs non autorisés je suppose.
je dois le faire manuellement:
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;
}
:)