Есть ли у Java встроенная функция, позволяющая мне линейно искать элемент в массиве или мне нужно просто использовать цикл for?
Поиск элемента в массиве в Java
Ответ 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()
. Имейте в виду, что сначала необходимо отсортировать массив.