由高效-低效进行排序
1、在for-each循环中通过Map.entrySet遍历key和value
该方式是最常见最可取的方式,尤其是在数据容量较大的情况。
Map<String, String> map = new HashMap<String, String>();
for (Map.Entry<String, String> entry : map.entrySet()) {
System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
}
注意:如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。
2、在for-each循环中遍历keys或values
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
Map<String, String> map = new HashMap<String, String>();
for (String key : map.keySet()) {
System.out.println("key= " + key + " and value= " + map.get(key));
}
for (String value : map.values()) {
System.out.println("value= " + value + " and value= " + map.get(key));
}
该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。
3、通过Map.entrySet使用iterator遍历key和value
使用泛型:
Map<String, String> map = new HashMap<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() + " and value= " + entry.getValue());
}
不使用泛型:
Map map = new HashMap();
Iterator entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("Key = " + key + ", Value = " + value);
}
4、通过键找值遍历(效率低)
// 二次取值(效率低)
Map<String, String> map = new HashMap<String, String>();
System.out.println("通过Map.keySet遍历key和value:");
for (String key : map.keySet()) {
System.out.println("key= " + key + " and value= " + map.get(key));
}
参考: