1. 在 for-each 循環(huán)中使用 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());
}
}
在一套循環(huán)中,拿到 key 和 value
2. 在 for-each 循環(huán)中遍歷 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);
}
}
這個(gè)是我常用的遍歷方式,比 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());
}
}
這個(gè)方法雖然看起來比較冗余,但是可以做到在遍歷的同時(shí),調(diào)用 iterator.remove() 來刪除 entries,可以用于移除 Map 中某個(gè)值
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實(shí)現(xiàn)(HashMap, TreeMap, LinkedHashMap, Hashtable等)
HashMap 存入的數(shù)值與遍歷出的數(shù)值順序會(huì)不同,所以如果要保證順序,要使用LinkedHashMap