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.