迭代器在使用时,如果在循环内迭代,每循环一次迭代,不能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