Коллекции, предоставляемые интерфейсом Map в Java

В дереве наследования интерфейса Map есть несколько реализаций, но только 3 основных, общих и универсальных - это HashMap, LinkedHashMap и TreeMap.

HashMap

В этой реализации в качестве базовой структуры данных используется хэш-таблица. Он реализует все операции Map и допускает нулевые значения и один нулевой ключ. Этот класс примерно эквивалентен Hashtable - устаревшей структуре данных до Java Collections Framework, но он не синхронизируется и допускает значения null. HashMap не гарантирует порядок элементов "ключ-значение". Поэтому рассмотрите возможность использования HashMap, когда порядок не имеет значения и допустимы значения null.

Map<Integer, String> mapHttpErrors = new HashMap<>();
 
mapHttpErrors.put(200, "OK");
mapHttpErrors.put(303, "See Other");
mapHttpErrors.put(404, "Not Found");
mapHttpErrors.put(500, "Internal Server Error");
 
System.out.println(mapHttpErrors);

Вывод:

{404=Not Found, 500=Internal Server Error, 200=OK, 303=See Other}

LinkedHashMap

В этой реализации в качестве базовых структур данных используются хэш-таблица и связанный список, поэтому порядок LinkedHashMap предсказуем, а порядок вставки является порядком по умолчанию. Эта реализация также позволяет использовать значения null, такие как HashMap. Поэтому рассмотрите возможность использования LinkedHashMap, если вы хотите, чтобы карта с ее парами ключ-значение была отсортирована по порядку их вставки.

Map<String, String> mapContacts = new LinkedHashMap<>();
 
mapContacts.put("0169238175", "Tim");
mapContacts.put("0904891321", "Lary");
mapContacts.put("0945678912", "Jane");
mapContacts.put("0981127421", "Fill");
 
System.out.println(mapContacts);

Вывод:

{0169238175=Tim, 0904891321=Lary, 0945678912=Jane, 0981127421=Fill}

TreeMap

В этой реализации в качестве базовой структуры данных используется красно-черное дерево. TreeMap сортируется в соответствии с естественным порядком его ключей или компаратором, предоставленным во время создания. Эта реализация не допускает значений null. Поэтому рассмотрите возможность использования TreeMap, если вы хотите, чтобы карта сортировала свои пары ключ-значение по естественному порядку ключей (например, в алфавитном или числовом порядке) или по указанному вами настраиваемому порядку.

Map<String, String> mapLang = new TreeMap<>();
 
mapLang.put(".c", "C");
mapLang.put(".java", "Java");
mapLang.put(".pl", "Perl");
mapLang.put(".cs", "C#");
mapLang.put(".php", "PHP");
mapLang.put(".cpp", "C++");
mapLang.put(".xml", "XML");
 
System.out.println(mapLang);

Вывод:

{.c=C, .cpp=C++, .cs=C#, .java=Java, .php=PHP, .pl=Perl, .xml=XML}

Полезные методы интерфейса Map

Метод Описание
Object put(Object key, Object value) Используется для вставки записи в эту карту.
void putAll(Map map) Используется для вставки указанной карты в эту карту.
Object remove(Object key) Используется для удаления записи для указанного ключа.
Object get(Object key) Используется для возврата значения для указанного ключа.
boolean containsKey(Object key)
Используется для поиска указанного ключа на этой карте.
Set keySet() Используется для возврата представления Set, содержащего все ключи.
Set entrySet() Используется для возврата представления Set, содержащего все ключи и значения.

Методы интерфейса Map.Entry

Метод Описание
Object getKey() Используется для получения ключа.
Object getValue() Используется для получения значения.

Читайте также:


Комментарии

Популярные сообщения из этого блога

Методы класса Object в Java

Как получить текущий timestamp в Java

Основные опции JVM для повышения производительности и отладки