Gymterview
middle

LinkedHashMap — что в нем от LinkedList, а что от HashMap

LinkedHashMap наследует HashMap и дополняет его двусвязным списком, связывающим все записи (Entry) в порядке их добавления или обращения.

От HashMap:

  • Хэш-таблица с корзинами для быстрого доступа по ключу за O(1).
  • Механизм хэширования и разрешения коллизий.
  • Все основные операции с той же сложностью, что у HashMap.

От LinkedList (концептуально):

  • Каждый Entry хранит дополнительные ссылки before и after на предыдущий и следующий элемент в порядке итерации.
  • Гарантированный порядок обхода элементов.
  • Два режима: insertion-order (по умолчанию) и access-order (при accessOrder = true в конструкторе).

В режиме access-order при каждом обращении (get(), put()) элемент перемещается в конец списка. Это позволяет реализовать LRU-кэш через переопределение метода removeEldestEntry().

На собеседовании: скажите, что от HashMap — хэш-таблица и O(1) доступ, от LinkedList — двусвязный список для порядка итерации. Упомяните два режима: insertion-order и access-order.