我对链表迭代器有疑问

如果我使用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|


在下一个然后删除的方法中,我们删除了迭代器指针之前的元素,如示例所示



我与以前的混淆,然后删除例如

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 ]

我们如何删除上一个!我们是否删除右侧的元素?

因为我以为移除总是会向后而不是向前

最佳答案

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


ListIterator#remove的文档中:


  从列表中删除next()返回的最后一个元素或
  previous()(可选操作)。每次只能拨打一次电话
  呼叫下一个或上一个。仅当add(E)尚未
  在最后一次呼叫下一个或上一个呼叫之后调用。


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

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

10-01 01:52
查看更多