1. 程式人生 > >Map集合遍歷的四種方式

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()方式來進行遍歷。