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
- И двата класа се разширяват Абстрактна карта клас.
- Картата е обект, който съхранява ключ-стойност двойки. В двойката ключ-стойност всеки ключ е уникален, но техните стойности могат да бъдат дубликат .
- И двата класа представляват картографирането от ключ да се стойности .
- И двете карти не са синхронизирани .
- Използване на карта слагам() метод за добавяне на елемент в картата.
- Итераторът хвърля 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()); } } }
Изход: