Java: как получить ключи и значения с map
Вступление
Хранилища ключевых значений обязательны и часто используются, особенно в операциях, требующих быстрого и частого поиска. Они позволяют сопоставлять объект – ключ – с другим объектом, значением. Таким образом, значения можно легко получить, просмотрев ключ.
В Java наиболее популярной реализацией map считается класс HashMap. Помимо сопоставления ключ-значение, он используется в коде, который требует частых вставок, обновлений и поиска. Время вставки и поиска является постоянной величиной O(1).
В этом уроке мы рассмотрим, как получить ключи и значения map в Java.
Получаем ключи и значения (записей) с map Java
Большую часть времени вы храните пары ключ-значение, потому что обе части информации важны. Таким образом, в большинстве случаев вы захотите собрать пару ключ-значение вместе.
Метод entrySet() возвращает набор объектов Map.Entry, которые находятся на карте. Вы можете легко перебирать этот набор, чтобы получить ключи и связанные с ними значения с map.
Заполним хэш-карту некоторыми значениями:
Map<String, Integer> map = new HashMap<>();
map.put("David", 24);
map.put("John", 35);
map.put("Jane", 19);
map.put("Billy", 21);
Теперь повторим эту карту, пройдясь по каждой записи Map.Entry<K,V> в наборе записей и извлекая ключ и значение из каждой из этих записей:
for (Map.Entry<String, Integer> 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-map с помощью forEach()
Java 8 знакомит нас с методом forEach() для коллекций. Он принимает BiConsumer<? super K, ? super V> action. Метод forEach() выполняет заданное действие для каждой записи хэш-map.
Используем ту же карту, что и раньше, но на этот раз добавим год к возрасту каждой записи:
map.forEach((key, value) -> System.out.println(key + " : " + value));
Результат:
Billy : 21
David : 24
John : 35
Jane : 19
Или, вместо того, чтобы использовать каждый ключ и значение с map, вы можете использовать целые записи из набора:
map.entrySet()
.forEach((entry) -> System.out.println(entry.getKey() + " : " + entry.getValue()));
Результат тот же:
Billy : 21
David : 24
John : 35
Jane : 19
Получаем ключи с map Java
Чтобы получить только ключи, если вам не нужна информация из значений, вместо набора записей вы можете получить набор ключей:
for(String key: map.keySet()){
System.out.println(key);
}
Вывод:
Billy
David
John
Jane
Получаем значения с map Java
Также вы можете получить только лишь значения. Для этого используем values():
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);
Вывод:
false
И если ключ существует:
boolean result = map.containsKey("John");
System.out.println(result);
Вывод:
true
Заключение
В этой статье мы рассмотрели несколько способов получения ключей и значений (записей) map в Java. Мы рассмотрели использование итератора и просмотр каждой записи Map.Entry, а также использование метода forEach() как на самой карте, так и на ее наборе записей.
Наконец, мы рассмотрели, как получить набор ключей и значения отдельно, и проверить, содержит ли карта данный ключ.