Відмінності між 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 та порівняльну таблицю. Ви також можете ознайомитися з іншими запропонованими нами статтями, щоб дізнатися більше -
- WebLogic проти JBoss
- Список проти встановити
- Git Fetch vs Git Pull
- Кафка проти Іскри | Основні відмінності
- Топ-5 відмінностей Кафки проти Кінезису