Рубрики
Без рубрики

Java: Как получить ключи и значения с карты

В этом уроке мы рассмотрим примеры того, как получить ключи и значения (записи) карты на Java. Мы будем использовать forEach, а также итераторы.

Автор оригинала: Guest Contributor.

Вступление

Хранилища ключевых значений необходимы и часто используются, особенно в операциях, требующих быстрого и частого поиска. Они позволяют сопоставить объект – ключ – с другим объектом, значением. Таким образом, значения можно легко получить, посмотрев на ключ.

В Java наиболее популярной реализацией Map является класс HashMap . Помимо сопоставления значений ключей, он используется в коде, который требует частых вставок, обновлений и поиска. Время вставки и поиска является постоянной величиной O(1).

В этом уроке мы рассмотрим как получить ключи и значения карты в Java .

Получение ключей и значений (записей) с карты Java

Большую часть времени вы храните пары ключ-значение, потому что обе части информации важны. Таким образом, в большинстве случаев вы захотите собрать пару ключ-значение вместе.

Метод entrySet() возвращает набор объектов Map.Entry V> , которые находятся на карте. Вы можете легко выполнить итерацию по этому набору, чтобы получить ключи и связанные с ними значения с карты. V>

Давайте заполним Хэш-карту некоторыми значениями:

Map map =  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.Entry pair : 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>

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