1. 程式人生 > >Iterator 迭代器 注意事項(1)

Iterator 迭代器 注意事項(1)

迭代器在使用時,如果在迴圈內迭代,每迴圈一次迭代,不能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