【问题标题】:How To Use ListIterator to Edit a List Content如何使用 ListIterator 编辑列表内容
【发布时间】:2018-04-15 14:59:24
【问题描述】:

我正在使用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;
    }
}

你能给我一些见解吗?

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

【问题讨论】:

  • 只有doSomething 知道它对ListIterator 的作用,因此由它来确保ListIterator 在退出时与进入时位于同一位置,例如拨打previous() 四次。
  • 感谢您的帮助,还有其他想法吗?就像在 dosomething 调用之前保存当前状态?+ 你认为 listiterator 仍然适合我的目的还是我不得不跳转到另一个结构?
  • 您不能保存迭代器的状态,也不能关闭/复制它。如果您阅读过文档,您应该已经知道这一点,即ListIterator 的javadoc。

标签: java list arraylist iterator


【解决方案1】:

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

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

这假定doSomething 只推进迭代器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-14
    • 1970-01-01
    相关资源
    最近更新 更多