我有一个 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
相关分类