web-dev-qa-db-fra.com

Android - Vérifier si une valeur existe dans un tableau

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?

40
user2065795

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
}
108
Rohit Jain

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 (). 

7
PermGenError

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");
4
OldCurmudgeon

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 !
}
1
Mr.Me

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;
}

:)

0
rapture