Відмінності між HashMap і TreeMap

HashMap був частиною колекції Java. Він забезпечує основну реалізацію інтерфейсу Java Map. Дані зберігаються в парах (ключ, значення). Вам потрібно знати його ключ, щоб отримати доступ до значення. HashMap відомий як HashMap, оскільки він використовує техніку Hashing. TreeMap використовується для реалізації інтерфейсу карт та навігаційної карти з класом абстрактних. Карта сортується за природним порядком її ключів або за компаратором, наданим на момент створення карти, залежно від того, який конструктор використовується.

Подібність між HashMap і TreeMap

Крім відмінностей, між хешмапом і treemap є подібність:

  • І класи HashMap, і TreeMap реалізують інтерфейси Serializable і Cloneable.
  • І HashMap, і TreeMap розширюють клас AbstractMap.
  • І класи HashMap, і TreeMap працюють на парах ключових значень.
  • І HashMap, і TreeMap - це несинхронізовані колекції.
  • І HashMap, і TreeMap закінчують невдалі колекції.

Обидві реалізації є частиною рамки збору та зберігають дані в парах Ключ-значення.

Програма Java, що показує HashMap і TreeMap

Ось програма java, яка демонструє, як елементи ставляться та витягуються з хешмапу:

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);
)
)

Вихід:

З результату видно, що хешмап не підтримує жодного порядку. Ось програма java, яка демонструє, як елементи ставляться та витягуються з дерева.

Код:

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 - це хеш-таблична реалізація. Він розширює клас абстрактних карт та реалізує інтерфейс Map. Карта хешу працює за принципом хешування. Реалізація Map виконує функцію блокованої хеш-таблиці, але коли відра набувають занадто великі розміри, вони перетворюються на вузли дерева, кожне з яких має схожу структуру з вузлами TreeMap. TreeMap розширює клас абстрактних карт та реалізує інтерфейс навігаційної карти. Основа структури даних для дерева - це червоно-чорне дерево.

2. Ітераційний порядок

Порядок ітерації Hash Map не визначений, тоді як елементи TreeMap впорядковуються в натуральному порядку або в користувацькому порядку, визначеному за допомогою порівняльника.

3. Продуктивність

Оскільки Hashmap є реалізацією на основі хештету, вона забезпечує продуктивність у постійному часі, рівну O (1) для більшості загальних операцій. Час, необхідний для пошуку елемента в хеш-карті, становить O (1). Але якщо в хешмапі є неправильна реалізація, це може призвести до додаткових накладних витрат на пам'ять та зниження продуктивності. З іншого боку, TreeMap забезпечує продуктивність O (log (n)). Оскільки хешмап заснований на хеш-файлі, він вимагає постійного діапазону пам'яті, тоді як в мапі використовується лише об'єм пам'яті, необхідний для зберігання елементів. Таким чином, HashMap є більш економічним за часом, ніж карта, але maima є більш простором, ніж HashMap.

4. Нульова обробка

HashMap дозволяє майже один нульовий ключ та безліч нульових значень, тоді як у поштовій карті null не може бути використаний як ключовий, хоча нульові значення дозволені. Якщо null використовується як ключ у хешмапі, він викине нульовий виняток вказівника, оскільки він внутрішньо використовує метод порівняння або порівняння для сортування елементів.

Порівняння табл

Ось таблиця порівняння, що показує відмінності між хешмапом і treemap:

Основи порівнянняHashMapДерево карта
Синтаксиспублічний клас HashMap розширює AbstractMap реалізує Map, Cloneable, Serializableпублічний клас TreeMap розширює втілення AbstractMapNavigableMap, Cloneable, Serializable
ЗамовленняHashMap не забезпечує замовлення елементів.Елементи впорядковуються в натуральному або індивідуальному порядку.
ШвидкістьШвидкийПовільно
Нульові ключі та значенняДозволяє майже одній клавіші як нульові та множинні значення нуля.Це не дозволяє null як ключовий, але дозволяє кілька нульових значень.
Споживання пам'ятіHashMap споживає більше пам’яті через нижню таблицю Hash.Споживає менше пам'яті порівняно з HashMap.
ФункціональністьНадає лише основні функціїВін надає багатші функції.
Використовуваний метод порівнянняВ основному використовується метод equals () для порівняння ключів.Для порівняння клавіш використовується метод порівняння () або метод порівняння до ().
Інтерфейс реалізованийКарта, серіалізація та клонуванняНавігаційна карта, серіалізаційна та клонована
ПродуктивністьДає виконання O (1).Забезпечує продуктивність O (log n)
Структура данихВикористовує хеш-таблицю як структуру даних.Використовує червоно-чорне дерево для зберігання даних.
Однорідні та гетерогенні елементиВін допускає однорідні, а також неоднорідні елементи, оскільки не виконує сортування.Він допускає лише однорідні елементи під час сортування.
Використовуйте випадкиВикористовується, коли нам не потрібні пари ключ-значення у відсортованому порядку.Використовується, коли для сортування потрібні пари ключових значень на карті.

Висновок

Зі статті робиться висновок, що хешмап - це загальноприйнята реалізація інтерфейсу Map. Він забезпечує продуктивність O (1), тоді як Treemap забезпечує продуктивність O (log (n)). Отже, HashMap зазвичай швидший, ніж TreeMap.

Рекомендовані статті

Це посібник щодо HashMap проти TreeMap. Тут ми обговорюємо вступ до HashMap проти TreeMap, відмінності Hashmap від Treemap та порівняльну таблицю. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -

  1. WebLogic проти JBoss
  2. Список проти встановити
  3. Git Fetch vs Git Pull
  4. Кафка проти Іскри | Основні відмінності
  5. Топ-5 відмінностей Кафки проти Кінезису