String c = (String) iter.next();
Integer a = (Integer) map.get((String) iter.next()); // 錯誤:調用了兩次 next()
Iterator.next() 會移動游標並返回當前元素。連續調用兩次會跳過一個鍵,導致:
c 獲取但未處理值。map.get() 參數,取的是下一個鍵的值。while (iter.hasNext()) {
String key = (String) iter.next(); // 每次循環僅調用一次 next()
Integer value = (Integer) map.get(key);
System.out.println("name:" + key + " number:" + value);
}
或使用增強 for(Java 5+):
for (Map.Entry entry : map.entrySet()) {
System.out.println("name:" + entry.getKey() + " number:" + entry.getValue());
}
每次 hasNext() 判斷對應一次 next() 調用,切勿在循環體內多次調用 next()。