Sobes.tech
Back to questions
Junior — Middle
61

Какое отличие между структурами данных HashMap и LinkedHashMap в Java?

Companies where asked
IT OneIT One

Answer from AI

sobes.tech AI

HashMap и LinkedHashMap — это реализации интерфейса Map в Java, но между ними есть ключевое отличие в порядке хранения элементов:

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

  • 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.keySet());       // Порядок может быть произвольным
System.out.println(linkedHashMap.keySet()); // Порядок: [one, two, three]

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