Java 迭代器在使用下一个函数时遇到问题
我已经编写了下面的代码,但我无法理解为什么它会给出java.util.ConcurrentModificationException 谁能帮帮我吗 提前谢谢Java 迭代器在使用下一个函数时遇到问题,java,iterator,next,Java,Iterator,Next,我已经编写了下面的代码,但我无法理解为什么它会给出java.util.ConcurrentModificationException 谁能帮帮我吗 提前谢谢 static LinkedList<Integer> l1 = new LinkedList<Integer>(); public static void main(String[] args) { Scanner ob= new Scanner(System.in); Itera
static LinkedList<Integer> l1 = new LinkedList<Integer>();
public static void main(String[] args)
{
Scanner ob= new Scanner(System.in);
Iterator<Integer> l2=l1.iterator();
ListIterator<Integer> l3=l1.listIterator();
while(true)
{
System.out.println("Enter number (press 0 to exit the loop: ");
int number=ob.nextInt();
if(number == 0)
{
System.out.println("****");
break;
}
l3.add(number);
}
while(l2.hasNext())
System.out.println(l2.next());
}
静态LinkedList l1=新LinkedList();
公共静态void main(字符串[]args)
{
扫描器ob=新扫描器(System.in);
迭代器l2=l1.Iterator();
ListIterator l3=l1.ListIterator();
while(true)
{
System.out.println(“输入数字(按0退出循环:”);
int number=ob.nextInt();
如果(数字==0)
{
System.out.println(“****”);
打破
}
l3.添加(编号);
}
while(l2.hasNext())
System.out.println(l2.next());
}
您获得mod异常是因为您在获得迭代器之后但在调用迭代器上的方法之前修改列表。您获得迭代器,然后添加到列表中(例如,修改它),然后尝试使用迭代器
两件事:
Iterator<Integer> l2=l1.iterator();
Iterator l2=l1.Iterator();
输入循环后面的行l1.add
,而不是l3.add
,并完全取消l3
。没有理由(在此代码中)使用列表迭代器来添加到列表中
嘎!尝试使用真正有意义的名称。
l1
是一个列表,但l2
是一个迭代器?这不是一个好主意。您当前的代码甚至无法编译,因为使用的是hasnext
而不是hasnext
。请发布真正的代码来说明问题。您有l2.Next()
而不是l2.next()
(应该都是小写的)。Java是区分大小写的。@T.J.Crowderl2.next()
很好。@ZouZou:在OP编辑它之前是l2.next()
。(我的评论措辞很糟糕,如果你看到OP有l2.next()),那就只是模糊不清了。)
在他们的代码中。我重新编写了一点。)