Назад к вопросам
Middle
110
questionbank

В чем особенности LinkedHashMap?

Sobes Copilot

Получайте ответы в реальном времени

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

sobes.tech AI

LinkedHashMap сочетает в себе характеристики HashMap и LinkedList.

Особенности:

  • Порядок хранения: В отличие от HashMap, LinkedHashMap сохраняет порядок вставки элементов (insertion order). Существует также возможность сохранения порядка доступа (access order) — порядок обращения к элементам.
  • Производительность: Производительность основных операций (get, put, remove) близка к HashMap (в среднем O(1)), так как используется хэш-таблица. Дополнительные накладные расходы связаны с обслуживанием двусвязного списка.
  • Внутренняя структура: Состоит из хэш-таблицы (аналогично HashMap) и двусвязного списка, соединяющего все элементы в порядке их добавления или последнего доступа. Каждый узел в хэш-таблице дополнительно хранит ссылки на предыдущий и следующий элементы в списке.
  • Использование: Часто применяется, когда нужно сохранять порядок добавления элементов, например, для реализации кеша с вытеснением Least Recently Used (LRU).

Пример использования для LRU-кеша:

// Пример реализации LRU-кеша на LinkedHashMap
public class LRUCache<K, V> extends LinkedHashMap<K, V> {
    private final int cacheSize;

    public LRUCache(int cacheSize) {
        // Инициализация LinkedHashMap с accessOrder = true
        super(cacheSize, 0.75f, true); 
        this.cacheSize = cacheSize;
    }

    // Переопределение метода для удаления самого старого (наименее используемого) элемента при превышении размера
    @Override
    protected boolean removeEldestEntry(java.util.Map.Entry<K, V> eldest) {
        return size() > cacheSize;
    }
}