Sobes.tech
Назад к вопросам
Junior — Middle
74

Чем отличается поведение и особенности HashMap от LinkedHashMap в Java?

Компании, где спрашивали
Инити

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

sobes.tech AI

HashMap и LinkedHashMap в Java отличаются следующим:

  • HashMap хранит пары ключ-значение без гарантии порядка. Порядок элементов может меняться при добавлении или удалении.

  • LinkedHashMap расширяет HashMap и сохраняет порядок вставки элементов (insertion order). Это значит, что при итерировании элементы будут возвращаться в том порядке, в котором они были добавлены.

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

  • LinkedHashMap чуть медленнее из-за поддержки связного списка для порядка.
  • LinkedHashMap может использоваться для реализации кэшей с удалением по порядку доступа (access order).

Пример:

Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("one", 1);
hashMap.put("two", 2);
hashMap.put("three", 3);

Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("one", 1);
linkedHashMap.put("two", 2);
linkedHashMap.put("three", 3);

System.out.println("HashMap: " + hashMap.keySet());
System.out.println("LinkedHashMap: " + linkedHashMap.keySet());

Вывод:

HashMap: [two, one, three]
LinkedHashMap: [one, two, three]

Таким образом, если важен порядок элементов, стоит использовать LinkedHashMap.