Различия между HashMap и TreeMap

HashMap был частью коллекции Java. Он обеспечивает базовую реализацию Java Map Interface. Данные хранятся в парах (ключ, значение). Вам нужно знать его ключ для доступа к значению. HashMap известен как HashMap, потому что он использует технику хеширования. TreeMap используется для реализации интерфейса карты и NavigableMap с абстрактным классом. Карта сортируется по естественному порядку ее ключей или по компаратору, предоставленному во время создания карты, в зависимости от того, какой конструктор используется.

Сходства между HashMap и TreeMap

Помимо различий, есть следующие сходства между hashmap и treemap:

  • Классы HashMap и TreeMap реализуют интерфейсы Serializable и Cloneable.
  • И HashMap, и TreeMap расширяют класс AbstractMap.
  • Классы HashMap и TreeMap работают с парами ключ-значение.
  • И HashMap, и TreeMap являются несинхронизированными коллекциями.
  • И HashMap и TreeMap терпят неудачу быстрые коллекции.

Обе реализации являются частью структуры сбора и хранят данные в парах ключ-значение.

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-программа, которая демонстрирует, как элементы помещаются и извлекаются из древовидной карты.

Код:

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 - это реализация на основе хеш-таблицы. Он расширяет класс Abstract Map и реализует интерфейс Map. Хэш-карта работает по принципу хеширования. Реализация Map действует как хеш-таблица с пакетами, но когда сегменты становятся слишком большими по размеру, они преобразуются в узлы дерева, каждый из которых имеет структуру, аналогичную узлам TreeMap. TreeMap расширяет класс Abstract Map и реализует интерфейс Navigable Map. Основной структурой данных для treemap является красно-черное дерево.

2. Порядок итерации

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

3. Производительность

Поскольку Hashmap является реализацией на основе хеш-таблицы, она обеспечивает производительность в постоянном времени, равную O (1) для большинства распространенных операций. Время, необходимое для поиска элемента в хэш-карте, составляет O (1). Но если в hashmap есть неправильная реализация, то это может привести к дополнительным затратам памяти и снижению производительности. С другой стороны, TreeMap обеспечивает производительность O (log (n)). Поскольку хэш-карта основана на хеш-таблице, для нее требуется непрерывный диапазон памяти, тогда как древовидная карта использует только объем памяти, необходимый для хранения элементов. Следовательно, HashMap более эффективен по времени, чем treemap, но treemap более экономичен, чем HashMap.

4. Обращение с нулем

HashMap допускает почти один нулевой ключ и много нулевых значений, тогда как в древовидной карте нулевой нельзя использовать в качестве ключа, хотя допустимы нулевые значения. Если null используется в качестве ключа в hashmap, он выдаст исключение нулевого указателя, потому что он внутренне использует метод compare или compareTo для сортировки элементов.

Сравнение таблицы

Вот таблица сравнения, показывающая различия между hashmap и treemap:

Основа сравненияHashMapTreeMap
Синтаксисоткрытый класс HashMap расширяет AbstractMap реализует Map, Cloneable, Serializableоткрытый класс TreeMap расширяет AbstractMap ImplementsNavigableMap, Cloneable, Serializable
заказHashMap не предоставляет никакого порядка для элементов.Элементы заказываются в натуральном или индивидуальном порядке.
скоростьБыстроМедленный
Нулевые ключи и значенияПозволяет использовать почти один ключ как нулевое и несколько нулевых значений.Это не позволяет null в качестве ключа, но допускает множественные нулевые значения.
Потребление памятиHashMap потребляет больше памяти из-за базовой Hash Table.Потребляет меньше памяти по сравнению с HashMap.
функциональностьПредоставляет только основные функцииЭто обеспечивает более богатые возможности.
Используемый метод сравненияВ основном использует метод equals () для сравнения ключей.Использует метод Compare () или CompareTo () для сравнения ключей.
Интерфейс реализованКарта, Сериализуемая и КлонируемаяНавигационная карта, сериализуемая и клонируемая
ПроизводительностьДает представление 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. Список против Сета
  3. Git Fetch против Git Pull
  4. Кафка против Спарк | Основные отличия
  5. 5 главных отличий Кафки от Кинезиса