JBo*_*Boy 15 java iterator while-loop
勉强的是,这段小代码抛出了上面提到的Exception.另外,查看网络上发布的代码似乎是正确的:
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorTest {
ArrayList<Integer> arr = new ArrayList<Integer>();
Iterator i = arr.iterator();
public void show() {
arr.add(2);
arr.add(5);
arr.add(9);
while(i.hasNext()){
System.out.println(i.next());
}
}
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢
anu*_*ava 13
这个电话:
Iterator i=arr.iterator();
Run Code Online (Sandbox Code Playgroud)
应该是在完成对ArrayList的所有写入之后.
所以在您的代码中,在开始迭代之前执行此操作:
Iterator i=arr.iterator();
while(i.hasNext()) {
...
}
Run Code Online (Sandbox Code Playgroud)
这是因为您已经修改了通过iterator()
和调用获取迭代器之间的支持列表next()
。
迭代器的典型用法是:
for (Iterator<Integer> iter=arr.iterator(); iter.hasNext(); ) {
Integer element = iter.next();
}
Run Code Online (Sandbox Code Playgroud)
或者更好的是,使用新的 for-each 循环:
for (Integer element: arr) {
}
Run Code Online (Sandbox Code Playgroud)
确保在循环之外对集合执行添加。
归档时间: |
|
查看次数: |
12945 次 |
最近记录: |