2013-02-13 3 views
29

J'ai un tableau nommé "bob" qui contient des valeurs. Comment puis-je savoir si la valeur "idiote" existe dans le tableau nommé "bob" sans itération à travers elle?Android - Vérifie si une valeur existe dans un tableau

+0

Il est important de comprendre quand vous apprenez le développement d'Android, que votre question peut être juste une question Java, qui n'est pas spécifique à Android. Quel est le cas ici :) – Richard

Répondre

89

Vous pouvez utiliser la méthode List#contains. Pour cela, vous devez convertir votre tableau en liste. Vous pouvez utiliser la méthode Arrays#asList() fot que:

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

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

Dans ce cas, vous pouvez changer 'Arrays.asList (bob)' à Collections.singletonList (bob) '= moins d'utilisation de la mémoire. –

5

Convertir le tableau à la liste à l'aide statique Arrays.asList(T) et vérifier avec List.contains(Object) pour vérifier si un objet existe dans la collection recalibrée.

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

La méthode traditionnelle serait cependant d'itérer sur la matrice et de vérifier chaque élément en utilisant equals().

3

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"); 
2

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 pour convertir votre tableau en un objet ListArray. mais cela consomme de la mémoire supplémentaire, alors assurez-vous que cela en vaut la peine avant de l'utiliser.

Modifier

Si vous êtes après mémoire peformance et la sauvegarde que vous pouvez utiliser algorthem de recherche binaire à la place: cette façon, vous n'avez pas d'allouer de nouveaux objets:

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

Si je cherche "silly1" il me donne mauvais résultat .. Il dit qu'il existe – user2065795

+0

Arrays.binarySearch utilise la même méthode de comparaison qui est utilisée dans list.contais .... object.equals (..) alors s'il vous plaît faire Assurez-vous que votre test est exact ... –

Questions connexes