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

Поиск элемента в массиве в Java

Есть ли у Java встроенная функция, позволяющая мне линейно искать элемент в массиве или мне нужно просто использовать цикл for?

4b9b3361

Ответ 1

Для списков существует метод contains, поэтому вы должны иметь возможность:

Arrays.asList(yourArray).contains(yourObject);

Предупреждение: это может не делать то, что вы (или я) ожидаем, см. комментарий Tom ниже.

Ответ 2

Возможно, вы захотите использовать реализацию Collection вместо плоского массива.

Интерфейс Collection определяет метод contains(Object o), который возвращает true/false.

ArrayList реализация определяет indexOf(Object o), которая дает индекс, но этот метод не относится ко всем реализациям коллекции.

Оба этих метода требуют правильных реализаций метода equals(), и вам, вероятно, нужен правильно реализованный метод hashCode(), если вы используете хэш на основе Collection (например, HashSet).

Ответ 3

С помощью Java 8 вы можете сделать это:

int[] haystack = {1, 2, 3};
int needle = 3;

boolean found = Arrays.stream(haystack).anyMatch(x -> x == needle);

Вам нужно будет сделать

boolean found = Arrays.stream(haystack).anyMatch(x -> needle.equals(x));

если вы работаете с объектами.

Ответ 4

Используйте цикл for. Там ничего не встроено в массив. Или переключитесь на класс коллекции java.util Collection.

Ответ 5

Вы можете использовать один из методов Arrays.binarySearch(). Имейте в виду, что сначала необходимо отсортировать массив.