LinkedList - 遍历时获取当前和上一个

我有一个 LinkedList,在遍历它时需要知道当前、上一个和下一个项目。我想没有办法用“for each”表示法来做到这一点,所以我转向了列出迭代器。结果证明它们相当混乱。


无论如何,我有一个似乎可以跟踪当前、上一个和下一个的实现。


    LinkedList<String> list = new LinkedList<String>();


    list.add("p");

    list.add("r");

    list.add("r");

    list.add("q");

    list.add("p");

    list.add("p");

    list.add("r");


    String prev = "";

    String next = "";

    String curr = "";

    Boolean firstRun = true;


    ListIterator<String> li = list.listIterator();


    while (li.hasNext()) {

        curr = li.next();


        if (firstRun) {

            prev = "-";

            firstRun = false;

        } else if (li.hasPrevious()) {

            prev = li.previous();

            li.next();

            if (li.hasNext())

                curr = li.next();

        } else

            prev = "-";


        if (li.hasNext()) {

            next = li.next();

            li.previous();

            if (li.hasPrevious())

                curr = li.previous();

        } else

            next = "-";


        System.out.println(curr + prev + next);

    }

这输出


p-r

rpr

rrq

qrp

pqp

ppr

rp-

我想知道是否有更简单的方法来做到这一点。代码很混乱,而且不直观,至少我是如何解释它的。


编辑:我已经抽象了我试图解决的真实实际情况。我有一个对象列表,而不是字符串,例如:


public foo(String name, String data) {

    this.name = name;

    this.data = data

}

如果 foo.name 是“单独的”,即 next 和 prev 项目不同,我想跟踪 foo.data


慕码人8056858
浏览 354回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java