Iterator 迭代器 注意事項(1)
阿新 • • 發佈:2019-02-15
迭代器在使用時,如果在迴圈內迭代,每迴圈一次迭代,不能iterator.next多次,使用多次就相當於迭代多次。
eg :
錯誤的:
列印結果:public static void main(String[] args) { HashMap<String, String> map = new HashMap<String, String>(); map.put("1", "1111"); map.put("2", "2222"); map.put("3", "3333"); Iterator<String> iter = map.keySet().iterator(); while(iter.hasNext()){ System.out.println("列印一下="+iter.next()); System.out.println("使用一下="+iter.next()); } }
列印一下=3
使用一下=2
列印一下=1
Exception in thread "main" java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:796)
at java.util.HashMap$KeyIterator.next(HashMap.java:828)
at eoss.test.TestIterator.main(TestIterator.java:17)
正確的:
public static void main(String[] args) { HashMap<String, String> map = new HashMap<String, String>(); map.put("1", "1111"); map.put("2", "2222"); map.put("3", "3333"); Iterator<String> iter = map.keySet().iterator(); while(iter.hasNext()){ String key = iter.next(); System.out.println("列印一下="+key); System.out.println("使用一下="+key); } }
列印結果:
列印一下=3
使用一下=3
列印一下=2
使用一下=2
列印一下=1
使用一下=1