java 遍歷Map 的五種方法
遍歷Map的方法, 我總結了5種, CoreJava中給出的是第一種使用forEach+lambda表示式, 我認為這種方法應該是最好的, 但是隻能在Java8之後的版本使用;
建議優先使用第一種和第四種(類似第二種);
遍歷Map:
第一種可以使用Map的forEach方法加上Java8的lambda表示式:
第二種可以使用Map.Entry來遍歷Map的條目:
第三種可以使用for結合Map的keySet和values方法來遍歷:
第四種是使用迭代器, 這種是看起來比較熟悉而且效率挺高的, 但是要注意, 不能在使用for迴圈訪問迭代器的同時使用remove操作, javadoc說這樣會發生不可預期的錯誤, 如果希望迭代的同時刪除元素, 可以使用while來遍歷:
當然還有第五種是在遍歷keySet的時候呼叫get方法獲取對應的值, 但是這種方法太撈了, 效率很低, 不提了, 就上一段測試程式碼吧:
測試程式碼如下:
輸出如下:
貼一些map和sortedmap的常用方法:
/**
* lejun.chen
*/
package com.chen.Controller;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
/**
* @author lejun.chen
* @Time SystemTime
*/
public class mapTest {
public static void main(String[] args) {
Map<String,String> map=new HashMap<>();
map.put("國家", "中國");
map.put("魔都", "上海");
map.put("寒冷", "北極");
map.put("美女", "成都");
map.put("發展", "武漢");
map.put("美女多的", "重慶");
//JAVA8
System.out.println("<------1----------------------------------------->");
/*map.forEach((K,V){
System.out.println(K+"--------"+V);
});
*/
System.out.println("<------2----------------------------------------->");
//1.老方法
for (String a : map.keySet()) {
System.out.println(a);
}
for (String b : map.values()) {
System.out.println(b);
}
System.out.println("<------3----------------------------------------->");
//第二種使用Map.Entry來遍歷Map的條目
for (Map.Entry<String, String> it :map.entrySet()) {
System.out.println(it.getKey()+"-----"+it.getValue());
}
System.out.println("<----4------------------------------------------->");
//迭代器遍歷
for (Iterator<Map.Entry<String, String>> it=map.entrySet().iterator();it.hasNext();) {
Map.Entry<String, String> itt=it.next();
System.out.println(itt.getKey()+"-------"+itt.getValue());
}
System.out.println("<----5------------------------------------------->");
for (String a:map.keySet()) {
System.out.println(a+"------"+map.get(a));
}
}
}