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

Введение Хранилища значений ключей важны и часто используются, особенно в операциях, требующих быстрого и частого поиска. Они позволяют сопоставить объект - ключ - другому объекту, значению. Таким образом, значения можно легко получить, просмотрев ключ. В Java наиболее популярной реализацией Map является класс HashMap. Помимо сопоставления «ключ-значение», он используется в коде, который требует частых вставок, обновлений и поисков. Время вставки и поиска - это постоянная величина O (1). В этом

Вступление

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

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

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

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

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

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

Давайте HashMap некоторыми значениями:

 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> в entrySet() и извлекая ключ и значение из каждой из этих записей:

 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 с помощью forEach ()

Java 8 знакомит нас с forEach() для коллекций. Он принимает BiConsumer<? super K, ? super V> action . Метод forEach() выполняет заданное BiConsumer для каждой записи HashMap .

Давайте использовать ту же карту, что и раньше, но на этот раз добавим год к возрасту каждой записи:

 map.forEach((key, value) -> System.out.println(key + " : " + value)); 

Это распечатывает:

 Billy : 21 
 David : 24 
 John : 35 
 Jane : 19 

Или вместо того, чтобы использовать каждый key и value из карты, вы можете использовать обычного Consumer и просто использовать целые записи из 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

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

Заключение

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

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

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus