遍历 Map 集合的方式
遍历 Map 集合有两种方式,分别是 keySet 和 entrySet。采用这两种方式,可以遍历 key+value、key、value。
采用 keySet 遍历
long startTime1 = System.currentTimeMillis();
Iterator<String> iter = map.keySet().iterator();
while (iter.hasNext()){
key = iter.next();
value = map.get(key);
}
long endTime1 = System.currentTimeMillis();
System.out.println("第一个程序运行时间:"+(endTime1-startTime1)+"ms");
long startTime2 = System.currentTimeMillis();
for(String key2 : map.keySet()){
value = map.get(key2);
}
long endTime2 = System.currentTimeMillis();
System.out.println("第二个程序运行时间:"+(endTime2-startTime2)+"ms");
采用 entrySet 遍历
long startTime3 = System.currentTimeMillis();
Iterator<Map.Entry<String,String>> iter3 = map.entrySet().iterator();
Map.Entry<String,String> entry3;
while (iter3.hasNext()){
entry3 = iter3.next();
key = entry3.getKey();
value = entry3.getValue();
}
long endTime3 = System.currentTimeMillis();
System.out.println("第三个程序运行时间:" +(endTime3-startTime3)+"ms");
long startTime4 = System.currentTimeMillis();
for(Map.Entry<String,String> entry4 : map.entrySet()){
key = entry4.getKey();
value = entry4.getValue();
}
long endTime4 = System.currentTimeMillis();
System.out.println("第四个程序运行时间:"+(endTime4-startTime4) +"ms");
采用 values 遍历 value
long startTime5 = System.currentTimeMillis();
Iterator<String> iter5 = map.values().iterator();
while (iter5.hasNext()){
value = iter5.next();
}
long endTime5 = System.currentTimeMillis();
System.out.println("第五个程序运行时间:"+(endTime5-startTime5) +"ms");
long startTime6 = System.currentTimeMillis();
for(String value6 : map.values()){
}
long endTime6 = System.currentTimeMillis();
System.out.println("第六个程序运行时间:"+(endTime6-startTime6) +"ms");
运行效率
1)map 的 key 采用简单形式和复杂形式时,查找的效率是不同的,简单的key值效率更高
2)当数据量大的时候,采用 entrySet 遍历 key+value 的效率要高于 keySet
3)当我们只需要取得 value 值时,采用 values 来遍历效率更高