Sobes.tech
Назад к вопросам
Senior
6

HashMap vs TreeMap: отличия, сложность операций, когда использовать?

Компании, где спрашивали
ТБанк

Ответ от нейросети

sobes.tech AI

HashMap vs TreeMap:

  • HashMap:

    • Основан на хеш-таблице.
    • Операции вставки, удаления, поиска — в среднем O(1).
    • Не гарантирует порядок элементов.
    • Позволяет использовать null в качестве ключа.
  • TreeMap:

    • Основан на красно-чёрном дереве (самобалансирующееся дерево).
    • Операции вставки, удаления, поиска — O(log n).
    • Хранит элементы в отсортированном порядке по ключу.
    • Не позволяет null в качестве ключа (выбросит NullPointerException).

Когда использовать:

  • Если важна быстрая произвольная выборка и порядок не важен — HashMap.
  • Если нужен отсортированный порядок ключей, или требуется навигация по диапазонам (например, subMap, headMap) — TreeMap.

Пример использования TreeMap для хранения итерируемого отсортированного словаря:

TreeMap<Integer, String> treeMap = new TreeMap<>();
treeMap.put(3, "three");
treeMap.put(1, "one");
treeMap.put(2, "two");

for (Map.Entry<Integer, String> entry : treeMap.entrySet()) {
    System.out.println(entry.getKey() + " = " + entry.getValue());
}
// Вывод будет в порядке ключей: 1, 2, 3