Java的LinkedList是一个双向链表,它的listlterator 方法返回一个实现了 Listlterator 接口的迭代器对象。如果需要在链表中间添加元素,就需要调Listlterator::add()方法,LinkedList::add()总是将元素添加到最后面。
当第一个调LinkedList::listIterator()时,会返回一个ListItr对象,并将游标重置到第 0 个元素之前。迭代器没有当前所在元素一说,它只有一个游标( cursor )的概念,这个游标总是在元素之间。
调用 next() 游标后移一位,并返回游标前面的元素。
调用ListItr::add()或ListItr::remove(),会将ListItr::lastReturned属性会被置为null。因此,如果接着调ListItr::set()、ListItr::remove(),Java都会抛java.lang.IllegalStateException,因此之后需要调一次需要ListItr::next()。
如果同时使用LinkedList,Listlterator对链表进行读写操作,会导致java.util.ConcurrentModificationException