Статья проплачена кошками - всемирно известными производителями котят.
Если статья вам понравилась, то можете поддержать проект.
Map (Отображение)
В контейнерах Map (отображение) хранятся два объекта: ключ и связанное с ним значение. Иногда используют термин "ассоциативный массив" или "словарь".
Map позволяет искать объекты по ключу. Объект, ассоциированный с ключом, называется значением. И ключи, и значения являются объектами. Ключи могут быть уникальными, а значения могут дублироваться. Некоторые отображения допускают пустые ключи и пустые значения.
Классы для карт:
- AbstractMap - абстрактный класс, реализующий большую часть интерфейса Map
- EnumMap - расширяет класс AbstractMap для использования с ключами перечислимого типа enum
- HashMap - структура данных для хранения связанных вместе пар "ключ-значение", применяется для использования хеш-таблицы
- TreeMap - для использования дерева, т.е. отображение с отсортированными ключами
- WeakHashMap - для использования хеш-таблицы со слабыми ключами, отображение со значениями, которые могут удаляться сборщиком мусора, если они больше не используются
- LinkedHashMap - отображение с запоминанием порядка, в котором добавлялись элементы, разрешает перебор в порядке вставки
- IdentityHashMap - использует проверку ссылочной эквивалентности при сравнении документов, отображение с ключами, сравниваемыми с помощью операции == вместо метода equals()
Метод toString() выводит содержимое в виде фигурных скобок, где ключи и значения разделяются знаком равенства. Ключи слева, значения справа.
Отображения не поддерживают реализацию интерфейса Iterable, поэтому нельзя перебрать карту через цикл for в форме for-each.
Интерфейс Map соотносит уникальные ключи со значениями. Ключ - это объект, который вы используете для последующего извлечения данных. Задавая ключ и значение, вы можете помещать значения в объект отображения. После того как это значение сохранено, вы можете получить его по ключу.
interface Map<K, V>
В параметре K указывается тип ключей, в V - тип хранимых значений.
Методы:
- void clear() - удаляет все пары "ключ-значение" из вызывающего отображения
- boolean containsKey(Object k) - возвращает значение true, если вызывающее отображение содержит ключ k. В противном случае возвращает false
- boolean containsValue(Object v) - возвращает значение true, если вызывающее отображение содержит значение v. В противном случае возвращает false
- Set<Map.Entry<K, V>> entrySet() - возвращает набор, содержащий все значения отображения. Набор содержит объекты интерфейса Map.Entry. Т.е. метод представляет отображение в виде набора
- boolean equals(Object o) - возвращает значение true, если параметр o - это отображение, содержащее одинаковые значения. В противном случае возвращает false
- V get(Object k) - возвращает значение, ассоциированное с ключом k. Возвращает значение null, если ключ не найден.
- int hashCode() - возвращает хеш-код вызывающего отображения
- boolean isEmpty() - возвращает значение true, если вызывающее отображение пусто. В противном случае возвращает false
- Set<K> keySet() - возвращает набор, содержащий ключи вызывающего отображения. Метод представляет ключи вызывающего отображения в виде набора
- V put(K k, V v) - помещает элемент в вызывающее отображение, переписывая любое предшествующее значение, ассоциированное с ключом. Возвращает null, если ключ ранее не существовал. В противном случае возвращается предыдущее значение, связанное с ключом.
- void putAll(Map<? extends K, ? extends V> m) - помещает все значения из m в отображение
- V remove(Object k) - удаляет элемент, ключ которого равен k
- int size() - возвращает количество пар "ключ-значение" в отображении
- Collection<V> values() - возвращает коллекцию, содержащую значения отображения.
Основные методы - get() и put(), чтобы получить или поместить значения в отображение.
Интерфейс Sortedmap расширяет интерфейс Map и гарантирует, что элементы размещаются в возрастающем порядке значений ключей.
Интерфейс NavigableMap (Java 7) расширяет интерфейс Sortedmap и определяет поведение отображения, поддерживающее извлечение элементов на основе ближайшего соответствия заданному ключу или ключам.
Интерфейс Map.Entry позволяет работать с элементом отображения.
HashMap обеспечивает максимальную скорость выборки, а порядок хранения его элементов не очевиден. TreeMap хранит ключи отсортированными по возрастанию, а LinkedHashMap хранит ключи в порядке вставки, но не обеспечивает скорость поиска HashMap.
В Android 11 (R) обещают добавить несколько перегруженных версий метода of(), которые являются частью Java 8.
В Android 11 (R) обещают добавить методы ofEntries() и entry(), которые являются частью Java 8.
Реклама