我对链表迭代器有疑问
如果我使用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顶部所述的元素之间。