Коллекции, предоставляемые интерфейсом 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() | Используется для получения значения. |
Читайте также:
- Интерфейсы Comparable и Comparator в Java
- Как HashMap обрабатывает коллизии в Java
- Как HashMap работает в Java
Комментарии
Отправить комментарий