Back to questions
Junior — Middle
60
Какое отличие в поведении метода contains() при использовании списков и множеств?
Answer from AI
sobes.tech AI
Метод contains() в Java используется для проверки, содержит ли коллекция определённый элемент. Поведение этого метода отличается между списками (List) и множествами (Set):
-
List.contains() проверяет наличие элемента, перебирая элементы в порядке их добавления. Если элемент встречается, возвращает
true. Порядок важен, и поиск может быть медленнее, так как список может содержать дубликаты. -
Set.contains() обычно реализован на основе хеш-таблиц (например,
HashSet), что обеспечивает более быструю проверку наличия элемента (приблизительно за O(1)). Множество не содержит дубликатов, поэтому проверка однозначна.
Итог:
- В списках поиск
contains()— линейный по времени. - В множествах — быстрый, благодаря хешированию.
Пример:
List<String> list = Arrays.asList("apple", "banana", "apple");
Set<String> set = new HashSet<>(list);
boolean inList = list.contains("apple"); // true
boolean inSet = set.contains("apple"); // true
Основное отличие — производительность и отсутствие дубликатов в множестве.