tgoop.com/Java_Iibrary/1498
Last Update:
Различия между List, Set и Map в Java — как раз то, что часто спрашивают на интервью
1. List представляет собой упорядоченную коллекцию элементов, в которой допускаются дубликаты. Элементы сохраняют порядок вставки, как, например, в ArrayList. Доступ к элементам осуществляется по индексу, например list.get(0). Основные методы: add(), get(), remove(), set()
.
Часто используемые реализации — ArrayList и LinkedList. List может содержать несколько значений null.
Потокобезопасность не обеспечивается по умолчанию, но можно использовать Collections.synchronizedList()
. Сценарий применения — когда важен порядок элементов и допускаются дубликаты. Для сортировки можно использовать Collections.sort()
. Производительность: быстрое чтение у ArrayList, быстрая вставка у LinkedList. Поддерживается работа с потоками, например list.stream()
.
2. Set — это неупорядоченная коллекция уникальных элементов. Порядок не гарантируется (например, в HashSet
). Доступ осуществляется через итерацию.
Основные методы: add(), contains(), remove()
. Часто используемые реализации — HashSet, LinkedHashSet, TreeSet
. Set может содержать только один элемент null, как в HashSet. Потокобезопасность отсутствует. Применяется, когда важна уникальность элементов.
Сортировка поддерживается в TreeSet, где элементы хранятся отсортированными. Производительность: быстрые операции в HashSet. Потоки поддерживаются (stream()
).
3. Map — это коллекция пар ключ-значение. Ключи должны быть уникальными, значения — нет.
Ключи могут быть неупорядоченными (HashMap), отсортированными (TreeMap) или упорядоченными по порядку вставки (LinkedHashMap). Доступ осуществляется по ключу, например map.get(key)
. Основные методы: put(), get(), remove(), containsKey()
. Типичные реализации — HashMap, LinkedHashMap, TreeMap, ConcurrentHashMap
.
Разрешён один null-ключ и несколько null-значений (например, в HashMap). Потокобезопасность отсутствует в HashMap, но есть в ConcurrentHashMap. Применяется, когда данные организованы в формате ключ-значение. TreeMap поддерживает сортировку по ключам. Производительность: быстрый доступ у HashMap, отсортированный доступ у TreeMap. Поддержка потоков осуществляется через map.entrySet().stream()
.