What are the different ways to traverse a hashmap?
There are several ways to iterate through a HashMap.
- Iterating using Iterator: by using the keySet() or entrySet() methods of a HashMap to obtain a set of keys or a set of key-value pairs, and then iterating through them using an Iterator.
HashMap<String, Integer> map = new HashMap<>();
// 添加键值对到map
// 遍历键集合
Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
// 根据key获取对应的值
Integer value = map.get(key);
// 进行其他操作
}
// 遍历键值对集合
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
String key = entry.getKey();
Integer value = entry.getValue();
// 进行其他操作
}
- Iterate through a key set or key-value pair set using foreach:
HashMap<String, Integer> map = new HashMap<>();
// 添加键值对到map
// 遍历键集合
for (String key : map.keySet()) {
// 根据key获取对应的值
Integer value = map.get(key);
// 进行其他操作
}
// 遍历键值对集合
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
// 进行其他操作
}
- Traverse using Java 8’s Stream API:
HashMap<String, Integer> map = new HashMap<>();
// 添加键值对到map
// 遍历键集合
map.keySet().stream().forEach(key -> {
// 根据key获取对应的值
Integer value = map.get(key);
// 进行其他操作
});
// 遍历键值对集合
map.entrySet().stream().forEach(entry -> {
String key = entry.getKey();
Integer value = entry.getValue();
// 进行其他操作
});
Note: When deleting elements during traversal using Iterator or foreach, make sure to use the remove() method of the Iterator to avoid throwing a ConcurrentModificationException.