我对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 ]
我们如何删除以前的!我们删除了右边的元素吗?
因为我认为删除总是会向前而不是前进
答案 0 :(得分:3)
我的问题是我们如何在使用之前删除,我们删除 迭代器指针之后或之前的元素?
来自ListIterator#remove
的文档:
从列表中删除next()或者返回的最后一个元素 previous()(可选操作)。此调用只能进行一次 呼叫下一个或上一个。只有在没有添加(E)的情况下才能进行此操作 在对下一个或上一个的最后一次调用之后调用。
换句话说,您不能在指针之后或之前删除。该文档指定remove
方法与指针的位置无关,并将删除上一次/上一次调用返回的对象。
但是,ListIterator
中仍然存在一个指针位于元素之间,如ListIterator
documentation顶部所述。