Introduction
Key-value stores are essential and often used, especially in operations that require fast and frequent lookups. They allow an object - the key - to be mapped to another object, the value. This way, the values can easily be retrieved, by looking up the key.
In Java, the most popular Map
implementation is the HashMap
class. Aside from key-value mapping, it's used in code that requires frequest insertions, updates and lookups. The insert and lookup time is a constant O(1).
In this tutorial, we'll go over how to get the Keys and Values of a map in Java.
Get Keys and Values (Entries) from Java Map
Most of the time, you're storing key-value pairs because both pieces of info are important. Thus, in most cases, you'll want to get the key-value pair together.
The entrySet()
method returns a set of Map.Entry<K, V>
objects that reside in the map. You can easily iterate over this set to get the keys and their associated values from a map.
Let's populate a HashMap
with some values:
Map<String, Integer> map = new HashMap<>();
map.put("David", 24);
map.put("John", 35);
map.put("Jane", 19);
map.put("Billy", 21);
Now, let's iterate over this map, by going over each Map.Entry<K,V>
in the entrySet()
, and extracing the key and value from each of those entries:
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()));
}
This results in:
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
Get Keys and Values (Entries) from Java Map with forEach()
Java 8 introduces us to the forEach()
method for collections. It accepts a BiConsumer<? super K, ? super V> action
. The forEach()
method performs the given BiConsumer
action on each entry of the HashMap
.
Let's use the same map from before, but this time, add a year to each of the entries' ages:
map.forEach((key, value) -> System.out.println(key + " : " + value));
This prints out:
Billy : 21
David : 24
John : 35
Jane : 19
Or, instead of consuming each key
and value
from the map, you can use a regular Consumer
and just consume entire entries from the entrySet()
:
map.entrySet()
.forEach((entry) -> System.out.println(entry.getKey() + " : " + entry.getValue()));
This also results in:
Billy : 21
David : 24
John : 35
Jane : 19
Get Keys from a Java Map
To retrieve just keys, if you don't really need any information from the values, instead of the entry set, you can get the key set:
for(String key: map.keySet()){
System.out.println(key);
}
Output:
Billy
David
John
Jane
Get Values from a Java Map
Similarly, one may desire to retrieve and iterate through the values only, without the keys. For this, we can use values()
:
Check out our hands-on, practical guide to learning Git, with best-practices, industry-accepted standards, and included cheat sheet. Stop Googling Git commands and actually learn it!
for(String value: map.values()){
System.out.println(value);
}
Output:
21
54
35
19
Check if Map Contains a Key
The HashMap
class has a containsKey()
method, which checks if the passed key exists in the HashMap
, and returns a boolean value signifying the presence of the element or lack thereof.
Let's check if a key, 5
exists:
boolean result = map.containsKey(5);
System.out.println(result);
This prints out:
false
And for an existing key:
boolean result = map.containsKey("John");
System.out.println(result);
This prints out:
true
Conclusion
In this article, we've gone over a few ways to get keys and values (entries) of a Map in Java. We've covered using an iterator and going through each Map.Entry<K, V>
, as well as using a forEach()
method both on the map itself, as well as its entry set.
Finally, we've gone over how to get the key set and values separately, and check if a map contains a given key.