Разлики между 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 и сравнителна таблица. Можете също да прегледате и другите ни предложени статии, за да научите повече -

  1. WebLogic срещу JBoss
  2. Списък срещу Set
  3. Git Fetch срещу Git Pull
  4. Кафка срещу Искри | Топ разлики
  5. Топ 5 разлики между Кафка и Кинезис