logo

Разлика между HashMap и TreeMap

Java HashMap и TreeMap и двата са класовете на рамката на Java Collections. Реализацията на Java Map обикновено действа като групирана хеш таблица. Когато кофите станат твърде големи, те се трансформират във възли на TreeNodes , всяка структурирана подобно на тези в java.util.TreeMap .

конструктор на низове java

HashMap

HashMap прилага Карта, възможност за клониране и Може да се сериализира интерфейс. Разширява се Абстрактна карта клас. Принадлежи на java.util пакет.

  • HashMap съдържа стойност въз основа на ключа.
  • Може да има един нулев ключ и множество нулеви стойности.
  • HashMap не поддържа ред по време на повторение.
  • Съдържа уникални елементи.
  • Работи на принципа на хеширането.

TreeMap

Класът TreeMap се разширява Абстрактна карта клас и инструменти NavigableMap , Може да се клонира , и Може да се сериализира интерфейс. TreeMap е пример за a Сортирана карта . Реализира се чрез червено-черно дърво, което означава, че редът на ключовете е сортиран.

  • TreeMap също съдържа стойност въз основа на ключа.
  • TreeMap е сортиран по ключове.
  • Съдържа уникални елементи.
  • Не може да има нулев ключ, но да има множество нулеви стойности.
  • Ключовете са във възходящ ред.
  • Той съхранява обекта в дървовидната структура.

Прилики между HashMap и TreeMap

    HashMapи TreeMap класове изпълняват Може да се клонира и Може да се сериализира интерфейс.
  • И двата класа се разширяват Абстрактна карта клас.
  • Картата е обект, който съхранява ключ-стойност двойки. В двойката ключ-стойност всеки ключ е уникален, но техните стойности могат да бъдат дубликат .
  • И двата класа представляват картографирането от ключ да се стойности .
  • И двете карти не са синхронизирани .
  • Използване на карта слагам() метод за добавяне на елемент в картата.
  • Итераторът хвърля a ConcurrentModificationException ако картата бъде променена по някакъв начин.

Ключовата разлика между HashMap и TreeMap е:

HashMap не запазва реда на повторение, докато TreeMap запази реда, като използва сравни с() метод или a компаратор зададен в конструктора на TreeMap.

изтегляне на youtube с vlc

Следната таблица описва разликите между HashMap и TreeMap.

Основа HashMap TreeMap
Определение Java HashMap е базирана на хеш-таблица реализация на интерфейс Map. Java TreeMap е базирана на дървовидна структура реализация на Map интерфейс.
Интерфейсни инструменти HashMap прилага Карта, възможност за клониране , и Може да се сериализира интерфейс. TreeMap прилага NavigableMap, Cloneable , и Може да се сериализира интерфейс.
Нулеви ключове/стойности HashMap позволява a единичен нулев ключ и многократни нулеви стойности. TreeMap не позволява нула ключове, но може да има многократни нулеви стойности.
Хомогенен/ хетерогенен HashMap позволява разнородни елементи, тъй като не извършва сортиране на ключове. TreeMap позволява хомогенни стойности като ключ поради сортирането.
производителност HashMap е по-бързо отколкото TreeMap, защото осигурява производителност в постоянно време, която е O(1) за основните операции като get() и put(). TreeMap е бавен в сравнение с HashMap, защото осигурява производителността на O(log(n)) за повечето операции като add(), remove() и contains().
Структура на данни Класът HashMap използва хеш таблица . TreeMap вътрешно използва a Червено-Черно дърво, което е самобалансиращо се двоично дърво за търсене.
Метод на сравнение То използва равно на() метод на Обект клас за сравняване на ключове. Методът equals() на класа Map го замества. Той използва сравни с() метод за сравняване на ключове.
Функционалност Класът HashMap съдържа само основни функции като get(), put(), KeySet() и т.н. Класът TreeMap е богат на функционалност, тъй като съдържа функции като: tailMap(), firstKey(), lastKey(), pollFirstEntry(), pollLastEntry() .
Ред на елементите HashMap не поддържа никакъв ред. Елементите са сортирани естествен ред (възходящ).
Употреби HashMap трябва да се използва, когато не изискваме двойка ключ-стойност в сортиран ред. TreeMap трябва да се използва, когато изискваме двойка ключ-стойност в сортиран (възходящ) ред.

Пример за HashMap срещу TreeMap

В следващия пример можем да наблюдаваме, че елементите на HashMap са в произволен ред, докато елементите на TreeMap са подредени във възходящ ред.

 import java.util.Map; import java.util.HashMap; import java.util.TreeMap; public class HashMapVsTreeMapExample { public static void main(String args[]) { /*------------HashMap implementation----------------*/ Map hm=new HashMap(); //adding elements to the HashMap hm.put(9, 'Red'); hm.put(12, 'Black'); hm.put(6, 'Green'); hm.put(19, 'White'); System.out.println('HashMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: hm.entrySet()) { //getting keys and values using method System.out.println(entry.getKey() + ' = ' +entry.getValue()); } /*------------TreeMap implementation----------------*/ Map tm=new TreeMap(); //adding elements to the TreeMap tm.put(9, 'Red'); tm.put(12, 'Black'); tm.put(6, 'Green'); tm.put(19, 'White'); System.out.println('TreeMap iteration Order:'); //iteration over map using for each loop for(Map.Entryentry: tm.entrySet()) { //getting keys and values using method //prints list in sorted order System.out.println(entry.getKey() + ' = ' +entry.getValue()); } } } 

Изход:

Разлика между HashMap и TreeMap