Java 如何使用ListIterator编辑列表内容

Java 如何使用ListIterator编辑列表内容,java,list,arraylist,iterator,Java,List,Arraylist,Iterator,我正在使用ListIterator对某个对象的列表进行迭代。目标是编辑列表的内容 下面是我正在做的一个例子: public class Test { /** * @param args the command line arguments */ public static void main(String[] args) { ArrayList list = new ArrayList<>(Arrays.asList("One"

我正在使用
ListIterator
对某个对象的列表进行迭代。目标是编辑列表的内容

下面是我正在做的一个例子:

public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        ArrayList list = new ArrayList<>(Arrays.asList("One", "Two", "Three","Four","Five"));
        ListIterator<String> listIterator = list.listIterator();
        String current ;
        while (listIterator.hasNext()) {
            doSomething(listIterator); 
            current = listIterator.next();
            //here I Want that current has the same value  as it was Before The doSomething Call
            //or in other Word , i want to save the adress of the last visired object In the List before doSomething Call.
    //As a result i can iterate from this point in the List.
            }

        }

    private static ListIterator<String> doSomething(ListIterator<String> listIterator) {
        System.out.println("Dosomething " + listIterator.next()); //
        System.out.println("Dosomething " + listIterator.next()); //
        System.out.println("Dosomething " + listIterator.next()); //
        System.out.println("Dosomething " + listIterator.next()); //
        return listIterator;
    }
}
公共类测试{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
ArrayList list=新的ArrayList(Arrays.asList(“一”、“二”、“三”、“四”、“五”);
ListIterator ListIterator=list.ListIterator();
串电流;
while(listIterator.hasNext()){
剂量测定法(列表迭代器);
current=listIterator.next();
//在这里,我希望电流具有与doSomething调用之前相同的值
//或者换句话说,我想在doSomething调用之前保存列表中最后一个被访问对象的地址。
//因此,我可以从列表中的这一点进行迭代。
}
}
私有静态ListIterator doSomething(ListIterator ListIterator){
System.out.println(“Dosomething”+listIterator.next())//
System.out.println(“Dosomething”+listIterator.next())//
System.out.println(“Dosomething”+listIterator.next())//
System.out.println(“Dosomething”+listIterator.next())//
返回列表迭代器;
}
}
你能给我一些见解吗


我使用的是
ListIterator
,因为我想在列表中来回移动,并用于编辑目的。

ListIterator
跟踪当前索引,因此您可以保存它并在调用
doSomething
后回放:

int pos = listIterator.nextIndex();
doSomething(listIterator);
while (listIterator.nextIndex() > pos) {
    listIterator.previous();
}

这假设
doSomething
只推进迭代器。

ListIterator
跟踪当前索引,因此您可以保存它并在调用
doSomething
后回放:

int pos = listIterator.nextIndex();
doSomething(listIterator);
while (listIterator.nextIndex() > pos) {
    listIterator.previous();
}

这假设
doSomething
只推进迭代器。

只有
doSomething
知道它在
ListIterator
上做什么,因此它需要确保
ListIterator
在退出时和进入时处于同一位置,例如通过调用
previous()
四次。谢谢你的帮助,还有其他想法吗?就像在dosomething调用之前保存当前状态一样?+你认为listiterator对我的目的来说仍然很好,还是我必须跳转到另一个结构?你不能保存迭代器的状态,也不能关闭/复制它。如果您已经阅读了文档,您应该已经知道这一点,即的javadoc。只有
doSomething
知道它对
列表迭代器做了什么,因此它可以确保
列表迭代器在退出时与进入时处于相同的位置,例如通过调用
previous()
四次。谢谢你的帮助,还有其他想法吗?就像在dosomething调用之前保存当前状态一样?+你认为listiterator对我的目的来说仍然很好,还是我必须跳转到另一个结构?你不能保存迭代器的状态,也不能关闭/复制它。如果您已经阅读了文档,即的javadoc,您应该已经知道这一点。