Ответ
List и Set — это интерфейсы из Java Collections Framework (JCF) с фундаментально разным поведением.
List (Список):
- Гарантирует порядок элементов. Элементы имеют индекс (позицию), по которому к ним можно обращаться.
- Допускает дубликаты. Один и тот же объект можно добавить несколько раз.
- Типичные реализации:
ArrayList(на основе массива, быстрый доступ по индексу),LinkedList(на основе двусвязного списка, быстрая вставка/удаление в середине).
List<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple"); // Дубликат разрешен
System.out.println(list); // [Apple, Banana, Apple]
System.out.println(list.get(1)); // Banana (доступ по индексу)
Set (Множество):
- Не допускает дубликатов. Попытка добавить существующий элемент игнорируется.
- Не гарантирует порядка (за исключением специальных реализаций). Основная задача — проверка принадлежности.
- Типичные реализации:
HashSet(самая быстрая, порядок непредсказуем),LinkedHashSet(сохраняет порядок вставки),TreeSet(хранит элементы отсортированными).
Set<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // Дубликат игнорируется
System.out.println(set); // [Banana, Apple] (порядок может быть любым)
// Проверка наличия элемента выполняется очень быстро (O(1) для HashSet)
boolean hasApple = set.contains("Apple"); // true
Выбор: Используй List, когда важен порядок или возможны дубликаты (например, история операций). Используй Set, когда нужно гарантировать уникальность элементов (например, коллекция уникальных ID пользователей).
Видео-ответы
▶
▶
▶
▶
▶
▶