遍历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));
}
}
}