map的遍歷
第一種:KeySet()
將Map中所有的鍵存入到set集合中。因?yàn)閟et具備迭代器。所有可以迭代方式取出所有的鍵,再根據(jù)get方法厢钧。獲取每一個鍵對應(yīng)的值。 keySet():迭代后只能通過get()取key?嬉橙。
取到的結(jié)果會亂序早直,是因?yàn)槿〉脭?shù)據(jù)行主鍵的時候,使用了HashMap.keySet()方法市框,而這個方法返回的Set結(jié)果霞扬,里面的數(shù)據(jù)是亂序排放的。
典型用法如下:
Map map = new HashMap();
map.put("key1","lisi1");
map.put("key2","lisi2");
map.put("key3","lisi3");
map.put("key4","lisi4");
//先獲取map集合的所有鍵的set集合枫振,keyset()
Iterator it = map.keySet().iterator();
//獲取迭代器
while(it.hasNext()){
Object key = it.next();
System.out.println(map.get(key));
}
第二種:entrySet()
Set> entrySet() //返回此映射中包含的映射關(guān)系的 Set 視圖喻圃。(一個關(guān)系就是一個鍵-值對),就是把(key-value)作為一個整體一對一對地存放到Set集合當(dāng)中的粪滤。Map.Entry表示映射關(guān)系斧拍。entrySet():迭代后可以e.getKey(),e.getValue()兩種方法來取key和value杖小。返回的是Entry接口肆汹。
典型用法如下:
Map map = new HashMap();
map.put("key1","lisi1");
map.put("key2","lisi2");
map.put("key3","lisi3");
map.put("key4","lisi4");
//將map集合中的映射關(guān)系取出愚墓,存入到set集合
Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Entry e =(Entry) it.next();
System.out.println("鍵"+e.getKey () + "的值為" + e.getValue());
}
推薦使用第二種方式,即entrySet()方法昂勉,效率較高浪册。
對于keySet其實(shí)是遍歷了2次,一次是轉(zhuǎn)為iterator岗照,一次就是從HashMap中取出key所對于的value村象。而entryset只是遍歷了第一次,它把key和value都放到了entry中攒至,所以快了煞肾。兩種遍歷的遍歷時間相差還是很明顯的。