Java map получить значение по ключу

Java map получить значение по ключу

В контейнерах Map (отображение) хранятся два объекта: ключ и связанное с ним значение. Иногда используют термин "ассоциативный массив" или "словарь".

Map позволяет искать объекты по ключу. Объект, ассоциированный с ключом, называется значением. И ключи, и значения являются объектами. Ключи могут быть уникальными, а значения могут дублироваться. Некоторые отображения допускают пустые ключи и пустые значения.

Классы для карт:

  • AbstractMap — абстрактный класс, реализующий большую часть интерфейса Map
  • EnumMap — расширяет класс AbstractMap для использования с ключами перечислимого типа enum
  • HashMap — структура данных для хранения связанных вместе пар "ключ-значение", применяется для использования хеш-таблицы
  • TreeMap — для использования дерева, т.е. отображение с отсортированными ключами
  • WeakHashMap — для использования хеш-таблицы со слабыми ключами, отображение со значениями, которые могут удаляться сборщиком мусора, если они больше не используются
  • LinkedHashMap — отображение с запоминанием порядка, в котором добавлялись элементы, разрешает перебор в порядке вставки
  • >Метод toString() выводит содержимое в виде фигурных скобок, где ключи и значения разделяются знаком равенства. Ключи слева, значения справа.

Отображения не поддерживают реализацию интерфейса Iterable, поэтому нельзя перебрать карту через цикл for в форме for-each.

Интерфейс Map соотносит уникальные ключи со значениями. Ключ — это объект, который вы используете для последующего извлечения данных. Задавая ключ и значение, вы можете помещать значения в объект отображения. После того как это значение сохранено, вы можете получить его по ключу.

В параметре K указывается тип ключей, в V — тип хранимых значений.

  • void clear() — удаляет все пары "ключ-значение" из вызывающего отображения
  • boolean containsKey(Object k) — возвращает значение true, если вызывающее отображение содержит ключ k. В противном случае возвращает false
  • boolean containsValue(Object v) — возвращает значение true, если вызывающее отображение содержит значение v. В противном случае возвращает false
  • Set > entrySet() — возвращает набор, содержащий все значения отображения. Набор содержит объекты интерфейса Map.Entry. Т.е. метод представляет отображение в виде набора
  • boolean equals(Object o) — возвращает значение true, если параметр o — это отображение, содержащее одинаковые значения. В противном случае возвращает false
  • V get(Object k) — возвращает значение, ассоциированное с ключом k. Возвращает значение null, если ключ не найден.
  • int hashCode() — возвращает хеш-код вызывающего отображения
  • boolean isEmpty() — возвращает значение true, если вызывающее отображение пусто. В противном случае возвращает false
  • Set keySet() — возвращает набор, содержащий ключи вызывающего отображения. Метод представляет ключи вызывающего отображения в виде набора
  • V put(K k, V v) — помещает элемент в вызывающее отображение, переписывая любое предшествующее значение, ассоциированное с ключом. Возвращает null, если ключ ранее не существовал. В противном случае возвращается предыдущее значение, связанное с ключом.
  • void putAll(Map m) — помещает все значения из m в отображение
  • V remove(Object k) — удаляет элемент, ключ которого равен k
  • int size() — возвращает количество пар "ключ-значение" в отображении
  • Collection values() — возвращает коллекцию, содержащую значения отображения.
Читайте также:  Lian li mini itx

Основные методы — get() и put(), чтобы получить или поместить значения в отображение.

Интерфейс Sortedmap расширяет интерфейс Map и гарантирует, что элементы размещаются в возрастающем порядке значений ключей.

Интерфейс NavigableMap (Java 7) расширяет интерфейс Sortedmap и определяет поведение отображения, поддерживающее извлечение элементов на основе ближайшего соответствия заданному ключу или ключам.

Интерфейс Map.Entry позволяет работать с элементом отображения.

HashMap обеспечивает максимальную скорость выборки, а порядок хранения его элементов не очевиден. TreeMap хранит ключи отсортированными по возрастанию, а LinkedHashMap хранит ключи в порядке вставки, но не обеспечивает скорость поиска HashMap.

Интерфейс Map представляет отображение или иначе говоря словарь, где каждый элемент представляет пару "ключ-значение". При этом все ключи уникальные в рамках объекта Map. Такие коллекции облегчают поиск элемента, если нам известен ключ — уникальный идентификатор объекта.

Следует отметить, что в отличие от других интерфейсов, которые представляют коллекции, интерфейс Map НЕ расширяет интерфейс Collection.

Среди методов интерфейса Map можно выделить следующие:

void clear() : очищает коллекцию

boolean containsKey(Object k) : возвращает true, если коллекция содержит ключ k

boolean containsValue(Object v) : возвращает true, если коллекция содержит значение v

Set > entrySet() : возвращает набор элементов коллекции. Все элементы представляют объект Map.Entry

boolean equals(Object obj) : возвращает true, если коллекция идентична коллекции, передаваемой через параметр obj

boolean isEmpty : возвращает true, если коллекция пуста

V get(Object k) : возвращает значение объекта, ключ которого равен k. Если такого элемента не окажется, то возвращается значение null

V getOrDefault(Object k, V defaultValue) : возвращает значение объекта, ключ которого равен k. Если такого элемента не окажется, то возвращается значение defaultVlue

V put(K k, V v) : помещает в коллекцию новый объект с ключом k и значением v. Если в коллекции уже есть объект с подобным ключом, то он перезаписывается. После добавления возвращает предыдущее значение для ключа k, если он уже был в коллекции. Если же ключа еще не было в коллекции, то возвращается значение null

Читайте также:  Penohome подложка под обои отзывы

V putIfAbsent(K k, V v) : помещает в коллекцию новый объект с ключом k и значением v, если в коллекции еще нет элемента с подобным ключом.

Set keySet() : возвращает набор всех ключей отображения

Collection values() : возвращает набор всех значений отображения

void putAll(Map map) : добавляет в коллекцию все объекты из отображения map

V remove(Object k) : удаляет объект с ключом k

int size() : возвращает количество элементов коллекции

Чтобы положить объект в коллекцию, используется метод put , а чтобы получить по ключу — метод get . Реализация интерфейса Map также позволяет получить наборы как ключей, так и значений. А метод entrySet() возвращает набор всех элементов в виде объектов Map.Entry .

Обобщенный интерфейс Map.Entry представляет объект с ключом типа K и значением типа V и определяет следующие методы:

boolean equals(Object obj) : возвращает true, если объект obj, представляющий интерфейс Map.Entry , идентичен текущему

K getKey() : возвращает ключ объекта отображения

V getValue() : возвращает значение объекта отображения

V setValue(V v) : устанавливает для текущего объекта значение v

int hashCode() : возвращает хеш-код данного объекта

При переборе объектов отображения мы будем оперировать этими методами для работы с ключами и значениями объектов.

Классы отображений. HashMap

Базовым классом для всех отображений является абстрактный класс AbstractMap , который реализует большую часть методов интерфейса Map. Наиболее распространенным классом отображений является HashMap , который реализует интерфейс Map и наследуется от класса AbstractMap.

Пример использования класса:

Чтобы добавить или заменить элемент, используется метод put, либо replace, а чтобы получить его значение по ключу — метод get. С помощью других методов интерфейса Map также производятся другие манипуляции над элементами: перебор, получение ключей, значений, удаление.

Нужно выбрать и вернуть первый попавшийся ключ key из Map по его значению value . Пробую так:

Читайте также:  Panasonic sdr s7ee k

3 ответа 3

ищем ключ по значению

UPD

как верно заметил @jmu лучше использовать map.entrySet()

Можно сделать вот так:

Можно воспользоваться BiMap из Guava (google java libraries).

Тогда будет метод inverse(), после применения которого key(и) станут value(ами), а value(и) — key(ами)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками java java-hashmap или задайте свой вопрос.

Связанные

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2020 Stack Exchange Inc; пользовательское содержимое попадает под действие лицензии cc by-sa 4.0 с указанием ссылки на источник. rev 2020.1.14.35771

Ссылка на основную публикацию
Insomnia the ark цена свободы
Очередь просмотра Очередь Удалить все Отключить YouTube Premium Хотите сохраните это видео? Пожаловаться Пожаловаться на видео? Выполните вход, чтобы сообщить...
High speed hdmi cable with ethernet
Приветствую всех посетителей блога о компьютерах. Сегодня бы очень хотелось поведать читателям о так называемом HDMI кабеле, с помощью которого...
Highscreen pure j 4pda прошивка
Внимание! Использование инструментов для перепрошивки неопытными пользователями может привести к выходу аппарата из строя. Установка этого обновления приведет к полному...
Instagram как выложить фото с компьютера
Зачем нужно выкладывать фото и видео в Инстаграм через компьютер? Инстаграм придумали, чтобы можно было быстро загрузить фото с телефона....
Adblock detector