【发布时间】:2015-09-07 15:14:57
【问题描述】:
根据Java API-
IllegalStateException - 如果在最后一次调用 next 或 previous 之后既没有调用 next 也没有调用 previous,或者 remove 或 add 没有被调用
remove()- 从列表中删除 next() 或 previous() 返回的最后一个元素(可选操作)。每次调用下一个或上一个时,此调用只能进行一次。只有在最后一次调用 next 或 previous 之后没有调用 add(E) 时才能进行。
因为每次我们同时调用add 和remove 时,它应该删除add 添加的最后一个元素,为什么会导致IllegalStateException
例如在我的代码中-
- 在
remove()之前每次调用next() - 同样
remove()不会被调用两次而不调用next()
那为什么java.lang.IllegalStateException 会同时调用add 和remove。
我的java代码是-
ListIterator<String> listIterator=list.listIterator();
while(listIterator.hasNext()){
System.out.println(listIterator.next());
listIterator.add("Intel");
listIterator.remove();
//listIterator.remove();
}
在调用next()之后,迭代器在下一个元素处。
当我们通过add()添加元素时,迭代器在最后添加的元素处向前移动
那为什么在调用remove()时会有java.lang.IllegalStateException
【问题讨论】:
标签: java list collections listiterator