Подтвердить что ты не робот

Android - проверьте, существует ли значение в массиве

У меня есть массив с именем "bob", который содержит значения.

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

Как узнать, существует ли в массиве с именем bob без глупостей значение "глупо"?

4b9b3361

Ответ 1

Вы можете использовать метод List#contains. Для этого вам нужно преобразовать массив в список. Вы можете использовать метод Arrays#asList(), чтобы:

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

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

Ответ 2

Преобразуйте массив в список с помощью static Arrays.asList(T) и проверьте с помощью List.contains(Object), чтобы проверить, существует ли объект в перенастроенной коллекции.

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

Традиционным способом было бы перебирать массив и проверять каждый элемент, используя equals().

Ответ 3

Если вы собираетесь проверить его, вы можете найти более эффективным использование HashSet:

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

Ответ 4

Вот простой способ сделать это:

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

Идея состоит в том, чтобы преобразовать ваш массив в объект ListArray. но он будет потреблять дополнительную память, поэтому убедитесь, что она того стоит, прежде чем использовать ее.

Edit

Если вы после формообразования и сохранения памяти, вы можете использовать бинарный поиск algorthem: таким образом вам не нужно выделять новые объекты:

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