hashmap 有以下几种遍历方式:
- 使用迭代器(Iterator)EntrySet
- 使用迭代器(Iterator)KeySet
- 使用
For Each EntrySet - 使用
For Each KeySet - 使用 Lambda 表达式
- 使用 Streams APi(单线程 / 多线程)
使用 EntrySet
Iterator<Map.Entry<Key.class, Value.class>> iterator = hashMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<Key.class, Value.class> entry = iterator.next();
System.out.println(entry.getKey() + ": " + entry.getValue());
}使用 KeySet
Iterator<Map.Entry> iterator = hashMap.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
System.out.println(key + ": " + map.get(key));
}EntrySet 和 KeySet 的性能比较
EntrySet 的性能好于 KeySet,因为KeySet要多一次get()的操作。
ForEach EntrySet
for (Map.Entry<Key.calss, Value.class> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}ForeEach KeySet
for (String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}Lambda
map.forEach((key, value) -> {
System.out.println(key + ": " + value);
});Streams API 单线程
map.entrySet().stream().forEach((entry) -> {
System.out.println(entry.getKey() + ": " + entry.getValue());
})Streams API 多线程
map.entrySet().parallelStream().forEach((entry) -> {
System.out.println(entry.getKey() + ": " + entry.getValue());
})