Ответ
Основные реализации интерфейса Map<K, V> в Java:
HashMap— хэш-таблица без гарантий порядка элементов. Допускает одинnull-ключ и множествоnull-значений. Не синхронизирована. Обеспечивает константное времяO(1)для операцийget()иput()в среднем случае.LinkedHashMap— расширяетHashMap, сохраняя порядок вставки элементов (или порядок доступа, если используется режим access-order). Немного медленнееHashMapиз-за поддержки связанного списка.TreeMap— реализует интерфейсSortedMap. Хранит элементы в отсортированном порядке по ключам (на основе их натурального порядка или переданногоComparator). Основана на красно-чёрном дереве, операцииget(),put()выполняются заO(log n).Hashtable— устаревшая синхронизированная версия. Не допускаетnull-ключи или значения. Для многопоточности предпочтительнее использоватьConcurrentHashMap.ConcurrentHashMap— высокопроизводительная, потокобезопасная реализация. Использует сегментирование блокировок (в более новых версиях — CAS-операции) для лучшего параллелизма.
Пример использования HashMap:
Map<String, Integer> inventory = new HashMap<>();
inventory.put("apples", 50);
inventory.put("oranges", 30);
Integer appleCount = inventory.get("apples"); // 50
boolean hasBananas = inventory.containsKey("bananas"); // false
Выбор реализации:
- Скорость и порядок не важен →
HashMap. - Нужен порядок вставки/доступа →
LinkedHashMap. - Требуется сортировка по ключу →
TreeMap. - Потокобезопасность →
ConcurrentHashMap.