7 traversal methods of HashMap
The study notes can help others better~
I suggest you read the original HashMap's 7 traversal methods and performance analysis! "Correction"
注:1)尽量使用 entrySet 来实现 Map 集合的遍历,性能更高
When traversing EntrySet, directly put the obtained ley and value into the entry pair, which can be obtained directly;
while KeySet uses map.get(key) when traversing, which is equivalent to traversing the Map collection again to query the key The corresponding value is therefore less efficient.
2)Iterator迭代器 和 forEach遍历的效率相差不大
1. The concise code of each method is given below
Note: The following entry is in the form of Integer:String
- Iterator iterator traversal - EntrySet
Iterator<Map.Entry<Integer, String>> iterator = map.EntrySet().iterator(); while(iterator.hasNext()){ Map.Entry<Integer, String> entry = ietrator.next(); System.out.println("key--" + enrty.getKey()); System.out.println("value--" + enrty.getValue()); }
- Iterator iterator traversal - KeySet
Iterator<Integer> iterator = map.KeySet().iterator(); while(iterator.hasNext()){ Integer key = iterator.next(); System.out.println("key--" + key); System.out.println("value--" + map.get(key)); }
- For Each traversal - EntrySet
for(Map.Entry<Integer, String> entry : map.EntrySet()){ System.out.println("key--" + entry.getKey()); System.out.println("value--" + entry.getValue()); }
- For Each traversal - KeySet
for(Integer key : map.KeySet()){ System.out.println("key--" + key); System.out.println("value--" + map.get(key)); }
- Lambda expression traversal (JDK1.8+)
map.forEach((key, value)->{ System.out.println("key--" + key); System.out.println("value--" + value); });
- Streams API traversal (JDK1.8+) - single-threaded stream()
map.entrySet().stream().forEach((entry)->{ System.out.println("key--" + entry.getKey()); System.out.println("value--" + entry.getValue()); });
- Streams API traversal (JDK1.8+) - multi-threaded parallelStream()
map.entrySet().parallelStream().forEach((entry) -> { System.out.println("key--" + entry.getKey()); System.out.println("value--" + entry.getValue()); });