hashmap java получить значение по ключу

Я хочу получить ключ HashMap, используя значение.

Что означает, что я хочу функцию, которая примет значение 100 и вернет строку.

Кажется, здесь есть много вопросов, задающих одно и то же, но они не работают для меня.

Возможно, потому что я новичок в java.

Как это сделать?

Метод put в HashMap определяется следующим образом:

ключ — это первый параметр, поэтому в вашем ключе «один» — это ключ. Вы не можете легко найти значение в HashMap, если вы действительно хотите это сделать, это будет линейный поиск, сделанный вызовом entrySet() , например:

Однако, что O (n) и вид поражения цели использования HashMap, если вам только нужно делать это редко. Если вы действительно хотите, чтобы иметь возможность искать ключ или значение часто, ядро ​​Java не имеет ничего для вас, но что-то вроде BiMap из Коллекций Google — это то, что вы хотите.

Интерфейс 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

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

Данный код возвращает:

  • Вопрос задан более года назад
  • 266 просмотров

Это плохая практика — использовать переменные конкретного типа, лучше использовать переменные абстрактных классов и интерфейсов. Так же, моё мнение, если в коде начинают использоваться коллекции коллекций, то стоит задумываться о качестве коде или вообще об архитектуре приложения. Например, можно перейти на объекты с нужными полями (если это возможно).

В данном примере мапу вполне можно заменить объектов с двумя стринговыми полями. KISS- сделай это максимально простым.

Также, если используются какие-то константы, то их можно вынести в перечисление (хотя читал, что в андроиде из-за большого потребления ресурсов они нежелательны, но, насколько помню, это было в какой-то не совсем уже свежей статье, может быть уже и не актуально. )

Оцените статью