HashMap
↳ Не сохраняет порядок элементов. Не потокобезопасен. Допускает один null ключ и несколько null значений. Основан на хеш-таблице. Используется как структура общего назначения с быстрым доступом к данным.
LinkedHashMap
↳ Сохраняет порядок вставки элементов. Не потокобезопасен. Допускает null ключи и значения. Построен на основе хеш-таблицы и связанного списка. Подходит, когда важен порядок добавления элементов.
TreeMap
↳ Хранит элементы в отсортированном порядке — по натуральному порядку или через Comparator. Не потокобезопасен. Не допускает null ключей, но допускает null значения. Реализован на базе красно-черного дерева. Используется, когда нужен доступ к отсортированным ключам.
Hashtable
↳ Не гарантирует порядок. Является потокобезопасной (устаревший подход). Не допускает ни null ключей, ни null значений. Построен на хеш-таблице. Используется в легаси-коде, где требуется синхронизация.
ConcurrentHashMap
↳ Не сохраняет порядок. Потокобезопасен (современная реализация). Не допускает null ключей и значений. Построен на сегментированной хеш-таблице (в Java 7) или использует блокировку бакетов (в Java 8+). Используется для высокопроизводительного конкурентного доступа.
WeakHashMap
↳ Не сохраняет порядок. Не потокобезопасен. Допускает null ключи и значения. Использует хеш-таблицу со слабыми ссылками на ключи. Применяется для кэшей, где ключи могут быть удалены сборщиком мусора, если больше нигде не используются.
IdentityHashMap
↳ Не сохраняет порядок. Не потокобезопасен. Допускает null ключи и значения. Реализован на основе хеш-таблицы. Отличается тем, что сравнивает ключи по ссылке (==), а не по значению (equals()), что может быть полезно в специфических случаях.
EnumMap
↳ Сохраняет порядок enum-констант. Не потокобезопасен. Не допускает null ключей, но допускает null значения. Реализован на основе массива. Эффективен для отображения enum-ключей на значения.
👉 Java Portal
