当前位置: 代码迷 >> J2EE >> 关于Iterator集合的一点有关问题<新手>
  详细解决方案

关于Iterator集合的一点有关问题<新手>

热度:622   发布时间:2016-04-17 23:15:17.0
关于Iterator集合的一点问题<新手>
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class IteratorDome01 {

public static void main(String[] args) {
List<String> lists=new ArrayList<String>();
 lists.add("A");
 lists.add("B");
 lists.add("C");
 lists.add("D");
 lists.add("E");
 lists.add("F");
// lists.add("G");
 Iterator<String> iter= lists.iterator();
 while (iter.hasNext()) {
System.out.println(iter.next());
String str=iter.next();
if ("A".equals(str)) {
iter.remove();
}else{
System.out.println(str);
}
}
}

}
写代码如上,,为什么当取消注释 // lists.add("G");输出结果就会报错,,输出结果为
A
B
C
D
E
F
G
Exception in thread "main" java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(Unknown Source)
at edu.jju.list.IteratorDome01.main(IteratorDome01.java:22)
------解决思路----------------------
你需要正确理解next()方法的作用,你在循环里面调用了2次next,所以每循环一次,会读取list中的2个元素。
你看看下面代码和你的代码的区别:


List<String> lists = new ArrayList<String>();
lists.add("A");
lists.add("B");
lists.add("C");
lists.add("D");
lists.add("E");
lists.add("F");
lists.add("G");
Iterator<String> iter = lists.iterator();
while (iter.hasNext()) {
//取得 下一个元素
String str = iter.next();
System.out.println(str);
if ("A".equals(str)) {
iter.remove();
} else {
System.out.println("Not A::: "+str);
}
}

  相关解决方案