1.我们首先用For循环,往一个Map里放入1000条数据
Map<String,String> map=new HashMap();
for(int i=0;i<1000;i++){
map.put(i+"",i+100+"");
}
2.第一种通过map.keySet()获取得键,然后根据键获得值
for(String s:map.keySet()){
System.out.println("key : "+s+" value : "+map.get(s));
}
这种写法最简单,也最清楚。
3.第二种通过Map.Entry(String,String)获取,然后使用entry.getKey()获得键,通过entry.getValue()获取到值
for(Map.Entry<String, String> entry : map.entrySet()){
System.out.println("key :"+entry.getKey()+"value :"+entry.getValue());
}
4.第三种就是集合Iterator遍历获取了,然后获取到Map.Entry<String,String>
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("键key :" + entry.getKey() + " value :" + entry.getValue());
}
5.我们比较一下它们遍历都需要得时间
Map<String,String> map=new HashMap();
for(int i=0;i<1000;i++){
map.put(i+"",i+100+"");
}
//通过map.keySet()获取到值,然后根据键获取到值
Long t1=System.currentTimeMillis();//获取当前时间
for(String s:map.keySet()){
System.out.println("key : "+s+" value : "+map.get(s));
}
Long t2=System.currentTimeMillis();
//通过Map.Entry(String,String) 获取,然后使用entry.getKey()获取到键,通过entry.getValue()获取到值标题
for(Map.Entry<String, String> entry : map.entrySet()){
System.out.println("key :"+entry.getKey()+"value :"+entry.getValue());
}
Long t3=System.currentTimeMillis();
//Iterator遍历获取,然后获取到Map.Entry<String, String>,再得到getKey()和getValue()
Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry<String, String> entry = it.next();
System.out.println("键key :" + entry.getKey() + " value :" + entry.getValue());
}
Long t4=System.currentTimeMillis();
System.out.println("遍历map.keySet的时间是"+(t2-t1));
System.out.println("遍历mMap.Entry(String,String)的时间是"+(t3-t2));
System.out.println("遍历Iterator遍历获取的时间是"+(t4-t3));
6.结果:
第一次:
第二次:
第三次:
由此得出结论,直接使用keySet的效率是最低。