
Сравнительная таблица
Основа для сравнения | 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 для хранения карты, представляет собой хеш-таблицу.
Порядок вставки записей в HashMap не сохраняется. Вставка записей в карту, созданную с помощью HashMap, основана на хэш-коде, рассчитанном по ключам в записях. Если по ошибке вы ввели дубликат ключа в HashMap, он заменит предыдущее значение этого ключа новым предложенным значением и вернет старое значение. Если дубликат ключа не используется и замена не производится, ключ всегда возвращает значение Null. Давайте посмотрим, как добавить записи в хэш-карту в следующем примере.
Hashmap hm = new Hashmap (); hm.put («Аджай», 275); hm.put («Виджай», 250); hm.put («Джонни», 150); hm.put («Джордан», 200); System.out.println (хм); / * вывод * / {Виджай = 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.
Ключевые различия между HashMap и LinkedHashMap в Java
- Наиболее важным отличием является то, что порядок вставки HashMap не сохраняется, тогда как порядок вставки LinkedHashMap сохраняется .
- Структура данных, используемая HashMap для хранения элементов карты, является Hashtable . С другой стороны, структура данных, используемая LinkedHashMap, - это связанный список и Hashtable .
- Класс HashMap расширяет класс AbstractMap и реализует интерфейс Map . Однако класс LinkedHashMap является дочерним классом класса HashMap, т.е. класс LinkedHashMap расширяет класс HashMap.
- Класс HashMap был представлен в версии JDK 2.0 . Класс LinkedHashMap был представлен позже в версии JDK 4.0 .
- Сравнительно класс LinkedHashMap имеет больше накладных расходов, чем класс HashMap, поскольку он должен поддерживать порядок элементов, вставленных в карту.
Заключение:
LinkedHashMap должен использоваться только там, где нас интересует последовательность элементов, вставленных в карту.