Автор оригинала: Guest Contributor.
Вступление
Хранилища ключевых значений необходимы и часто используются, особенно в операциях, требующих быстрого и частого поиска. Они позволяют сопоставить объект – ключ – с другим объектом, значением. Таким образом, значения можно легко получить, посмотрев на ключ.
В Java наиболее популярной реализацией Map
является класс HashMap
. Помимо сопоставления значений ключей, он используется в коде, который требует частых вставок, обновлений и поиска. Время вставки и поиска является постоянной величиной O(1).
В этом уроке мы рассмотрим как получить ключи и значения карты в Java .
Получение ключей и значений (записей) с карты Java
Большую часть времени вы храните пары ключ-значение, потому что обе части информации важны. Таким образом, в большинстве случаев вы захотите собрать пару ключ-значение вместе.
Метод entrySet()
возвращает набор объектов Map.Entry V>
, которые находятся на карте. Вы можете легко выполнить итерацию по этому набору, чтобы получить ключи и связанные с ними значения с карты. V>
Давайте заполним Хэш-карту
некоторыми значениями:
Mapmap = new HashMap<>(); map.put("David", 24); map.put("John", 35); map.put("Jane", 19); map.put("Billy", 21);
Теперь давайте повторим эту карту, пройдясь по каждой Map.Entry V>
в entrySet ()
и извлекая ключ и значение из каждой из этих записей: V>
for (Map.Entrypair : map.entrySet()) { System.out.println(String.format("Key (name) is: %s, Value (age) is : %s", pair.getKey(), pair.getValue())); }
Это приводит к:
Key (name) is: Billy, Value (age) is: 21 Key (name) is: David, Value (age) is: 24 Key (name) is: John, Value (age) is: 35 Key (name) is: Jane, Value (age) is: 19
Получите ключи и значения (записи) из карты Java с помощью forEach()
Java 8 знакомит нас с методом forEach()
для коллекций. Он принимает двоичный пользователь супер К, ? супер В> действие
. Метод forEach()
выполняет данное Потребитель
действие над каждой записью Хэш-карты
. супер К, ? супер В> действие
Давайте использовать ту же карту, что и раньше, но на этот раз добавьте год к возрасту каждой записи:
map.forEach((key, value) -> System.out.println(key + " : " + value));
Это распечатывает:
Billy : 21 David : 24 John : 35 Jane : 19
Или вместо того, чтобы использовать каждый ключ
и значение
с карты, вы можете использовать обычный Потребитель
и просто использовать все записи из entrySet()
:
map.entrySet() .forEach((entry) -> System.out.println(entry.getKey() + " : " + entry.getValue()));
Это также приводит к:
Billy : 21 David : 24 John : 35 Jane : 19
Получение ключей с карты Java
Чтобы получить только ключи, если вам действительно не нужна какая-либо информация из значений, вместо набора записей вы можете получить набор ключей:
for(String key: map.keySet()){ System.out.println(key); }
Выход:
Billy David John Jane
Получение значений с карты Java
Аналогично, может возникнуть желание получить и повторить только значения, без ключей. Для этого мы можем использовать значения()
:
for(String value: map.values()){ System.out.println(value); }
Выход:
21 54 35 19
Проверьте, содержит ли Карта Ключ
Класс HashMap
имеет метод containsKey ()
, который проверяет , существует ли переданный ключ в HashMap
, и возвращает логическое значение, указывающее на наличие элемента или его отсутствие.
Давайте проверим, есть ли ключ, 5
существует:
boolean result = map.containsKey(5); System.out.println(result);
Это распечатывает:
Git Essentials
Ознакомьтесь с этим практическим руководством по изучению Git, содержащим лучшие практики и принятые в отрасли стандарты. Прекратите гуглить команды Git и на самом деле изучите это!
false
И для существующего ключа:
boolean result = map.containsKey("John"); System.out.println(result);
Это распечатывает:
true
Вывод
В этой статье мы рассмотрели несколько способов получения ключей и значений (записей) карты на Java. Мы рассмотрели использование итератора и прохождение каждого Map.Entry V>
, а также использование метода forEach()
как на самой карте, так и в ее наборе записей. V>
Наконец, мы рассмотрели, как получить набор ключей и значения отдельно, и проверили, содержит ли карта данный ключ.