Разница между HashMap и LinkedHashMap в Java

Автор: Laura McKinney
Дата создания: 2 Апрель 2021
Дата обновления: 10 Май 2024
Anonim
Подготовка к Java собеседованию #5.4 Collections API: HashMap, LinkedHashMap и TreeMap
Видео: Подготовка к Java собеседованию #5.4 Collections API: HashMap, LinkedHashMap и TreeMap

Содержание


HashMap и LinkedHashMap - классы, очень похожие друг на друга и используемые для создания карты. Класс HashMap расширяет класс AbstractMap для использования хеш-таблицы для хранения элементов на карте. Класс LinkedHashMap поддерживает записи в карте на основе их порядка вставки. Функция, которая отличает HashMap и LinkedHashMap друг от друга, заключается в том, что HashMap не поддерживает порядок сохраненных записей на карте. С другой стороны, LinkedHashMap использует гибридную структуру данных для поддержания порядка записей, в которые они были вставлены. В сравнительной таблице ниже я рассмотрел некоторые другие различия между HashMap и LinkedHashMap.

  1. Сравнительная таблица
  2. Определение
  3. Ключевые отличия
  4. Вывод

Сравнительная таблица

Основа для сравненияHashMapLinkedHashMap
основнойПорядок вставки в HashMap не сохраняется.Порядок вставки сохраняется в LinkedHashMap.
Структура данныхHashMap использует HashTable для хранения карт.LinkedHashMap использует HashTable вместе со Linked List для хранения карты.
Расширяет / РеализуетHashMap расширяет AbstractMap и реализует интерфейс Map.LinkedHashMap расширяет Hashmap.
ВерсияHashMap был представлен в JDK 2.0.LinkedHashMap был представлен в JDK 4.0.
накладные расходыСравнительно меньше накладных расходов.Сравнительно больше накладных расходов, потому что он должен поддерживать порядок записей на карте.


Определение HashMap

HashMap - это класс, который используется для создания карты. Это реализует карта Интерфейс. Это также расширяет AbstractMap класс, чтобы он мог использовать хэш-таблицу для хранения записей на карте. Записи карты пара, где каждый ключ связан со значением. Ключ в записи используется для получения значения, следовательно, ключ должен быть уникальным. Вот почему дубликаты ключей не разрешены в HashMap. Но ключ в каждой записи карты может иметь различный тип, то есть ключи в карте, созданной HashMap, могут быть неоднородными. Структура данных, используемая HashMap для хранения карты, представляет собой хеш-таблицу.

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


Hashmap hm = new Hashmap (); hm.put («Аджай», 275); hm.put («Виджай», 250); hm.put («Джонни», 150); hm.put («Джордан», 200); System.out.ln (хм); / * вывод * / {Виджай = 250, Джонни = 150, Аджай = 275, Иордания = 200}

Как и в приведенном выше коде, вы можете видеть, что я создал объект HashMap и добавил записи, используя метод put, и когда я редактировал объект HashMap, записи не редактируются в том порядке, в котором они были вставлены. Следовательно, вы не можете притворяться, что порядок записей в HashMap вернется. HashMap использует все методы интерфейса Map и класса AbstractMap и не вводит никаких новых методов; у него есть свои конструкторы. Емкость по умолчанию карты хеша 16 и коэффициент заполнения по умолчанию 0.75.

Определение LinkedHashMap

LinkedHashMap также используется классом для создания карты. LinkedHashMap расширяет HashMap класс и был представлен позже в HashMap в версии 4.0 JDK. Будучи дочерним классом класса HashMap, LinkedHashMap точно такой же, как класс HashMap, включая конструкторы и методы. Но LinkedHashMap отличается тем, что поддерживает порядок вставки записей в карту. Структура данных, которая используется LinkedHashMap для хранения карты связанный список а также хеш-таблица.

В дополнение к методам, унаследованным HashMap, LinkedHashMap представляет один новый метод, который removeEldestEntry (), Этот метод используется для удаления самой старой записи на карте. Емкость LinkedHashMap по умолчанию равна 16, а коэффициент заполнения по умолчанию равен 0,75, что также аналогично классу HashMap.

  1. Наиболее важным отличием является то, что порядок вставки HashMap не сохранились тогда как порядок вставки LinkedHashMap сохраняется.
  2. Структура данных, используемая HashMap для хранения элементов карты Хеш-таблица, С другой стороны, структура данных, используемая LinkedHashMap, Связанный список а также Хеш-таблица.
  3. Класс HashMap расширяется AbstractMap класс и реализует карта интерфейс. Однако класс LinkedHashMap является дочерним классом HashMap класс, т.е. класс LinkedHashMap расширяет класс HashMap.
  4. Класс HashMap был представлен в JDK 2.0 версия. Класс LinkedHashMap был представлен позже в JDK 4.0 версия.
  5. Сравнительно класс LinkedHashMap имеет больше накладных расходов, чем класс HashMap, поскольку он должен поддерживать порядок элементов, вставленных в карту.

Вывод:

LinkedHashMap должен использоваться только там, где нас интересует последовательность элементов, вставленных в карту.