Traversal method of HasMap [7 types]

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"insert image description here
注: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

  1. 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());	
    }
    
  2. 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));
    }
    
  3. For Each traversal - EntrySet
    for(Map.Entry<Integer, String> entry : map.EntrySet()){
          
          
    	 System.out.println("key--" + entry.getKey());
    	 System.out.println("value--" + entry.getValue());
    }
    
  4. For Each traversal - KeySet
    for(Integer key : map.KeySet()){
          
          
    	System.out.println("key--" + key);
    	System.out.println("value--" + map.get(key));
    }
    
  5. Lambda expression traversal (JDK1.8+)
    map.forEach((key, value)->{
          
          
    	System.out.println("key--" + key);
        System.out.println("value--" + value);
    });
    
  6. 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());
    });
    
  7. 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());
    });
    

Guess you like

Origin blog.csdn.net/weixin_45463572/article/details/130439044