迭代器在处理下一个函数时遇到问题

时间:2014-01-04 09:46:49

标签: 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);
            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());

}

1 个答案:

答案 0 :(得分:2)

您正在获取mod异常,因为您在获取迭代器之后修改了列表,但在调用迭代器上的方法之前。您正在获取迭代器,然后添加到列表中(例如,修改它),然后尝试使用迭代器。

两件事:

  1. 点亮你的

    Iterator<Integer> l2=l1.iterator();
    
    输入循环后

  2. 使用l1.add,而不是l3.add,并完全取消l3。没有理由(在此代码中)仅使用ListIterator添加到列表中。