Sobes.tech
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

Основное отличие — производительность и отсутствие дубликатов в множестве.