LinkedList迭代器删除

时间:2015-05-27 16:32:43

标签: java linked-list iterator

我对linkedlist iterator

有疑问

如果我正在使用next,previous和remove方法

例如:

name.add("Alvin")
name.add("Keven") 
name.add("Jack") 

ListIterator<String> iterator = name.listIteraot();  //|AKJ

iterator.next(); // A|KJ
iterator.next(); // AK|J

iterator.add("Nina") // AKN|J 

iterator.next(); // AKNJ| 

iterator.remove(); // AKN|

在next和then方法中,我们在迭代器指针之前移除元素,如示例所示

PUT

我与前一个混淆,然后删除例如

myLList.add("Mary"); 
myLList.add("John"); 
myLList.add("Sue"); 

ListIterator<String> iterator = myLList.iterator 

itorator.next();
itorator.next();
itorator.add("Robert");
itorator.pervios();
itorator.pervios();
itorator.remove();

System.out.println(myLList); 

答案就是这样 [Mary , Robert , Sue ]

我们如何删除以前的!我们删除了右边的元素吗?

因为我认为删除总是会向前而不是前进

1 个答案:

答案 0 :(得分:3)

  

我的问题是我们如何在使用之前删除,我们删除   迭代器指针之后或之前的元素?

来自ListIterator#remove的文档:

  

从列表中删除next()或者返回的最后一个元素   previous()(可选操作)。此调用只能进行一次   呼叫下一个或上一个。只有在没有添加(E)的情况下才能进行此操作   在对下一个或上一个的最后一次调用之后调用。

换句话说,您不能在指针之后或之前删除。该文档指定remove方法与指针的位置无关,并将删除上一次/上一次调用返回的对象。

但是,ListIterator中仍然存在一个指针位于元素之间,如ListIterator documentation顶部所述。