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

Автор: Laura McKinney
Дата создания: 2 Апрель 2021
Дата обновления: 10 Май 2024
Anonim
Разница между HashMap и TreeMap Java собеседование
Видео: Разница между HashMap и TreeMap Java собеседование

Содержание


HashMap и TreeMap являются классами Map и оба реализуют интерфейс Map. Карта - это объект, в котором хранятся пары ключ-значение, где каждый ключ уникален, но в нем могут быть повторяющиеся значения. Класс HashMap использует хеш-таблицу в качестве структуры данных. TreeMap использует красно-черное дерево в качестве структуры данных. Основное различие между HashMap и Treemap заключается в том, что HashMap не сохраняет порядок вставки, тогда как TreeMap делает.

Итак, давайте начнем наше обсуждение различий между HashMap и TreeMap с помощью сравнительной таблицы, показанной ниже.

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

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

Основа для сравненияHashMapTreeMap
основной HashMap не поддерживает порядок вставки.TreeMap поддерживает порядок вставки.
Структура данныхHashMap использует Hash Table в качестве базовой структуры данных.TreeMap использует красно-черное дерево в качестве базовой структуры данных.
Нулевые ключи и значения HashMap допускает использование нулевого ключа, а также нулевого значения любое количество раз.TreeMap не позволяет использовать нулевой ключ, но допускает нулевые значения любое количество раз.
Расширяет и реализуетHashMap расширяет класс AbstractMap и реализует интерфейс Map.TreeMap расширяет класс AbstractMap и реализует интерфейсы SortedMap и NavigableMap.
ПредставлениеHashMap работает быстрее.TreeMap по сравнению с HashMap работает медленнее.


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

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

Порядок вставки в HashMap: не сохраняется, что означает, что объект hashmap не возвращает элементы в том порядке, в котором они были вставлены. С другой стороны, порядок, в котором элементы будут возвращены, не является фиксированным.

ключ разрешено быть ЗНАЧЕНИЕ NULL сразу, но ценности может быть ЗНАЧЕНИЕ NULL в любое время. HashMap может содержать гетерогенный объекты для ключей, а также значений.

Есть четыре конструктора HashMap:

HashMap () HashMap (карта m) HashMap (внутренняя емкость), HashMap (внутренняя емкость, float fillRatio)

первый Конструктор создает пустой объект HashMap. второй Конструктор инициализирует HashMap, используя элементы Map m. третий Конструктор инициализирует HashMap с емкостью, указанной в аргументе. четвертый Конструктор инициализирует емкость, а также коэффициент заполнения объекта HashMap.


По умолчанию вместимость HashMap есть 16и по умолчанию коэффициент заполнения HashMap есть 0.75.

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

Как HashMap, TreeMap также класс Map. TreeMap расширяется AbstractMap класс и реализует NavigabelMap а также SortedMap, Объекты TreeMap хранят элементы карты в древовидной структуре. Структура данных, используемая для хранения карты, Красно-Черное дерево.

TreeMap хранит пару ключ-значение в отсортированном порядке, что помогает в быстром поиске элементов. Объект TreeMap возвращает элементы в отсортированный (Восходящий) заказ.

Существует четыре конструктора TreeMap:

TreeMap () TreeMap (Comparator <? Super K> comp) TreeMap (Карта <? Расширяет K,? Расширяет V> m) TreeMap (SortedMap см)

первый Конструкторы создают пустой объект TreeMap, который будет отсортирован в естественном порядке по его ключам. второй конструктор создаст пустую карту дерева, которая будет отсортирована по Компаратор cmp, третий Конструктор выше создаст древовидную карту, которая будет инициализирована с использованием записей карта м, четвертый конструктор создаст древовидную карту, которая будет инициализирована с использованием записей SortedMap см.

Treemap не имеет собственного нового метода, он использует метод интерфейса NavigableMap и SortedMap и класс AbstractMap.

  1. Оба класса используются для создания объектов карты, но основное различие между HashMap и Treemap заключается в том, что HashMap не поддерживает порядок вставки, тогда как Treemap поддерживает.
  2. Структура данных, используемая Hashmap для хранения элементов карты, представляет собой хеш-таблицу, а структура данных, используемая TreeMap для хранения элементов карты, представляет собой красно-черное дерево.
  3. Оба класса Hashmap и Treemap расширяют класс AbstractMap, но класс HashMap реализует интерфейс Map, а TreeMap реализует интерфейс NavigableMap и SortedMap.
  4. Значения могут быть нулевыми любое количество раз в обоих случаях, но ключ может быть пустым только один раз в HashMap, а ключ никогда не может быть в Treemap.
  5. Производительность HashMap выше, он не тратит время на сортировку элементов карты, как это делает TreeMap. Следовательно, TreeMap работает медленнее, чем HashMap.

Заключение:

TreeMap следует использовать только тогда, когда вам требуется пара ключ-значение в отсортированном виде. Как сортировка включает в себя стоимость производительности. Несинхронизированный HashMap работает быстрее.