Map集合遍历的四种方式

public class MapPractice {

	public static void main(String[] args) {
	     Map<Integer,String> map = new HashMap<Integer,String>();
	     map.put(1, "张三丰");
             map.put(2, "周芷若");
             map.put(3, "汪峰");
             map.put(4, "灭绝师太");
    
        //1、通过Map.values()遍历所有的value,但不能遍历key
        for(String S:map.values()) {
        	System.out.println(S);
        }
        
        System.out.println("-----------");
        
        //2、使用map.entrySet()遍历Key和value,推荐,尤其是容量大时
        for(Map.Entry<Integer,String> S:map.entrySet()){
        	System.out.println(S.getKey() + "," +S.getValue());
        }
       
        System.out.println("-----------");
        
        //3、通过map.keySet()遍历key和value
        for(Integer S:map.keySet()) {
        	System.out.println(S + "," + map.get(S));
        }

        System.out.println("-----------");
        
        //4、通过map.entrySet()使用iterator遍历key和value
        Iterator iterator = map.entrySet().iterator();
        while(iterator.hasNext()) {
        	Map.Entry<Integer,String> entry = (Map.Entry<Integer,String>) iterator.next();
        	System.out.println(entry.getKey() + "," + entry.getValue());
        	       	
        }
        	
		}		       
	}

map.entrySet()与map.keySet()的区别:

     虽然使用keyset及entryset来进行遍历能取得相同的结果,但两者的遍历速度是有差别的。

     keySet():迭代后只能通过get()取key,再根据key值取value。

     entrySet():迭代后可以e.getKey(),e.getValue()取key和value。

     keySet()的速度比entrySet()慢了很多,也就是keySet方式遍历Map的性能不如entrySet性能好,为了提高性能,所以通常用entrySet()方式来进行遍历。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章