Разница между HashMap и LinkedHashMap в Java
Содержание
HashMap и LinkedHashMap - классы, очень похожие друг на друга и используемые для создания карты. Класс HashMap расширяет класс AbstractMap для использования хеш-таблицы для хранения элементов на карте. Класс LinkedHashMap поддерживает записи в карте на основе их порядка вставки. Функция, которая отличает HashMap и LinkedHashMap друг от друга, заключается в том, что HashMap не поддерживает порядок сохраненных записей на карте. С другой стороны, LinkedHashMap использует гибридную структуру данных для поддержания порядка записей, в которые они были вставлены. В сравнительной таблице ниже я рассмотрел некоторые другие различия между HashMap и LinkedHashMap.
- Сравнительная таблица
- Определение
- Ключевые отличия
- Вывод
Сравнительная таблица
Основа для сравнения | HashMap | LinkedHashMap |
---|---|---|
основной | Порядок вставки в 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, он заменит предыдущее значение этого ключа новым предложенным значением и вернет старое значение. Если дубликат ключа не используется и замена не производится, ключ всегда возвращает значение 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 расширяет HashMap класс и был представлен позже в HashMap в версии 4.0 JDK. Будучи дочерним классом класса HashMap, LinkedHashMap точно такой же, как класс HashMap, включая конструкторы и методы. Но LinkedHashMap отличается тем, что поддерживает порядок вставки записей в карту. Структура данных, которая используется LinkedHashMap для хранения карты связанный список а также хеш-таблица. В дополнение к методам, унаследованным HashMap, LinkedHashMap представляет один новый метод, который removeEldestEntry (), Этот метод используется для удаления самой старой записи на карте. Емкость LinkedHashMap по умолчанию равна 16, а коэффициент заполнения по умолчанию равен 0,75, что также аналогично классу HashMap.
Определение LinkedHashMap
- Наиболее важным отличием является то, что порядок вставки HashMap не сохранились тогда как порядок вставки LinkedHashMap сохраняется.
- Структура данных, используемая HashMap для хранения элементов карты Хеш-таблица, С другой стороны, структура данных, используемая LinkedHashMap, Связанный список а также Хеш-таблица.
- Класс HashMap расширяется AbstractMap класс и реализует карта интерфейс. Однако класс LinkedHashMap является дочерним классом HashMap класс, т.е. класс LinkedHashMap расширяет класс HashMap.
- Класс HashMap был представлен в JDK 2.0 версия. Класс LinkedHashMap был представлен позже в JDK 4.0 версия.
- Сравнительно класс LinkedHashMap имеет больше накладных расходов, чем класс HashMap, поскольку он должен поддерживать порядок элементов, вставленных в карту.
Вывод:
LinkedHashMap должен использоваться только там, где нас интересует последовательность элементов, вставленных в карту.