Разлики между HashMap и TreeMap
HashMap е част от колекцията на Java. Той осигурява основната реализация на Java Map интерфейса. Данните се съхраняват в (ключ, стойност) двойки. Трябва да знаете неговия ключ за достъп до стойност. HashMap е известен като HashMap, защото използва техниката Hashing. TreeMap се използва за внедряване на Map Interface и NavigableMap с абстрактния клас. Картата е сортирана според естествения ред на нейните ключове или от сравнителя, предоставен по време на създаването на картата, в зависимост от това кой конструктор се използва.
Прилики между HashMap и TreeMap
Освен разликите, има следните прилики между hashmap и treemap:
- И класовете HashMap и TreeMap реализират сериализируеми и Cloneable интерфейси.
- Както HashMap, така и TreeMap разширяват класа AbstractMap.
- И класовете HashMap и TreeMap работят върху двойки ключ-стойност.
- И HashMap и TreeMap са несинхронизирани колекции.
- Както HashMap, така и TreeMap се провалят с бързи колекции.
И двете реализации са част от рамката за събиране и съхраняват данни в двойки Key-value.
Java програма, показваща HashMap и TreeMap
Ето java програма, която демонстрира как елементите се поставят и извличат от hashmap:
package com.edubca.map;
import java.util.*;
class HashMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
HashMap hashmap =
new HashMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = hashmap.get(arr(i));
// If first occurrence of the element
if (hashmap.get(arr(i)) == null)
hashmap.put(arr(i), 1);
// If elements already present in hash map
else
hashmap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m:hashmap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test the above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)
изход:
От изхода става ясно, че hashmap не поддържа никакъв ред. Ето java програма, която демонстрира как елементите се поставят и извличат от treemap.
Код:
package com.edubca.map;
import java.util.*;
class TreeMapDemo
(
// This function prints frequencies of all elements
static void printFrequency(int arr())
(
// Create an empty HashMap
TreeMap treemap =
new TreeMap ();
// Iterate through the given array
for (int i = 0; i < arr.length; i++)
(
Integer value = treemap.get(arr(i));
// If first occurrence of element
if (treemap.get(arr(i)) == null)
treemap.put(arr(i), 1);
// If elements already present in hash map
else
treemap.put(arr(i), ++value);
)
// Print result
for (Map.Entry m: treemap.entrySet())
System.out.println("Frequency of " + m.getKey() +
" is " + m.getValue());
)
// Main method to test above method
public static void main (String() args)
(
int arr() = (10, 40, 5, 12, 5, 7, 10);
printFrequency(arr);
)
)
изход:
От изхода се забелязва, че клавишите са сортирани в естествен ред. Следователно Treemap поддържа сортиран ред.
Различни разлики между HashMap и TreeMap (Инфографика)
Посочените по-долу са топ разликите между HashMap и TreeMap
Ключова разлика на HashMap срещу TreeMap
По-долу са точките на ключова разлика HashMap и TreeMap:
1. Структура и изпълнение
Hash Map е реализация, базирана на хеш таблица. Той разширява класа на абстрактната карта и реализира интерфейса на картата. Hash Map работи на принципа на хеширане. Реализацията на Map действа като букетирана хеш таблица, но когато кофите придобият твърде голям размер, те се преобразуват в Tree възли, всяка от които има структура, подобна на възлите на TreeMap. TreeMap разширява класа на абстрактната карта и реализира интерфейс за навигационна карта. Основната структура на данни за treemap е червено-черно дърво.
2. Заповед за итерация
Редът за итерация на Hash Map е неопределен, докато елементите на TreeMap са подредени в естествен ред или в потребителски ред, посочен с помощта на сравнител.
3. Изпълнение
Тъй като Hashmap е базирана на бърза реализация, тя осигурява производителност с постоянно време, равна на O (1) за повечето от обичайните операции. Времето, необходимо за търсене на елемент в хеш картата е O (1). Но ако има неправилна реализация в hashmap, това може да доведе до допълнителна режийна памет и влошаване на производителността. От друга страна, TreeMap осигурява изпълнение на O (log (n)). Тъй като hashmap се основава на hashtable, той изисква непрекъснат диапазон от памет, докато treemap използва само количеството памет, необходимо за съхраняване на елементи. Следователно HashMap е по-ефективен във времето от treemap, но treemap е по-ефективен от пространството от HashMap.
4. Нулева работа
HashMap позволява почти един нулев ключ и много нулеви стойности, докато в дървена карта нула не може да се използва като ключ, въпреки че нулевите стойности са разрешени. Ако null се използва като ключ в hashmap, той ще хвърли изключение с нулев указател, защото вътрешно използва метод за сравнение или сравнениеTo за сортиране на елементи.
Сравнение на табл
Ето таблица за сравнение, показваща разликите между hashmap и treemap:
Основа за сравнение | HashMap | дървовидна карта |
Синтаксис | обществен клас HashMap разширява AbstractMap реализира Map, Cloneable, Serializable | обществен клас TreeMap разширява приложенията на AbstractMapNavigableMap, Cloneable, Serializable |
Подреждане | HashMap не предоставя никаква поръчка за елементи. | Елементите се подреждат в естествен или персонализиран ред. |
скорост | Бърз | Бавен |
Нулеви ключове и стойности | Позволява почти един ключ като нула и множество нулеви стойности. | Не позволява null като ключ, но позволява множество нулеви стойности. |
Консумация на памет | HashMap изразходва повече памет заради основната таблица на Hash. | Консумира по-малко памет в сравнение с HashMap. |
Функционалност | Предоставя само основни функции | Той предоставя по-богати функции. |
Използван метод за сравнение | По принцип използва метода equals () за сравняване на ключовете. | Използва сравнение () или метод сравняване до () за сравняване на ключовете. |
Интерфейс реализиран | Карта, сериализируема и клонируема | Навигационна карта, сериализируема и клонируема |
производителност | Дава изпълнение на O (1). | Осигурява изпълнение на O (log n) |
Структура на данни | Използва хеш таблицата като структура от данни. | Използва Red-Black Tree за съхранение на данни. |
Хомогенни и хетерогенни елементи | Той позволява хомогенни, както и разнородни елементи, тъй като не извършва сортиране. | Той позволява само хомогенни елементи, докато извършва сортиране. |
Случаи на употреба | Използва се, когато не се нуждаем от двойки ключ-стойност в подреден ред. | Използва се, когато се сортират двойки ключ-стойност на картата. |
заключение
От статията се стига до извода, че hashmap е общо предназначение на интерфейса на Map. Той осигурява производителност на O (1), докато Treemap осигурява изпълнение на O (log (n)). Следователно HashMap обикновено е по-бърз от TreeMap.
Препоръчителни статии
Това е ръководство за HashMap срещу TreeMap. Тук обсъждаме въвеждането на HashMap срещу TreeMap, разликите между Hashmap и Treemap и сравнителна таблица. Можете също да прегледате и другите ни предложени статии, за да научите повече -
- WebLogic срещу JBoss
- Списък срещу Set
- Git Fetch срещу Git Pull
- Кафка срещу Искри | Топ разлики
- Топ 5 разлики между Кафка и Кинезис