1. 在 for-each 循环中使用 entries 来遍历(最常见)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
if (!map.isEmpty()) {
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
}
在一套循环中,拿到 key 和 value
2. 在 for-each 循环中遍历 keys 或 values(常用)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
if (!map.isEmpty()) {
//遍历map中的键
for (Integer key : map.keySet()) {
System.out.println("Key = " + key);
}
//遍历map中的值
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
}
这个是我常用的遍历方式,比 entrySet 速度更快,代码比 Iterator 更简洁
3. 使用 Iterator 遍历 (可以删除值)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
if (!map.isEmpty()) {
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry<Integer, Integer> entry = entries.next();
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
}
这个方法虽然看起来比较冗余,但是可以做到在遍历的同时,调用 iterator.remove() 来删除 entries,可以用于移除 Map 中某个值
4. 通过键找值遍历(不咋使用,效率低)
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
if (!map.isEmpty()) {
for (Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key = " + key + ", Value = " + value);
}
}
以上方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable等)
HashMap 存入的数值与遍历出的数值顺序会不同,所以如果要保证顺序,要使用LinkedHashMap