我有一個對象的列表,並希望向前和向後迭代,直到找到一個「有效」的元素。如何在兩個方向上迭代列表?
MyClass {
private boolean valid;
public boolean isValid() { return valid; }
}
List<MyClass> classes; //assume sorted list
現在,我想在idx
位置開始,並反覆向前和向後找到有效最接近的元素。到目前爲止,我已經獲得了前向算法的工作。但是我覺得代碼可以優化:
//應該在位置X
int idx = 10;
//find the closest element that is valid
for (ListIterator<MyClass> itr = classes.listIterator(idx); itr.hasNext();) {
if (itr.hasNext()) {
MyClass my = itr.next();
while (!my.isValid()) {
if (itr.hasNext()) {
my = itr.next();
} else {
break;
}
}
}
Sysout("the closest valid element is: " + my);
}
開始能迭代算法編寫好?
爲什麼不用List.get(int index)迭代? – 2014-08-28 08:05:22
http://stackoverflow.com/questions/2102499/iterating-through-a-list-in-reverse-order-in-java ::這裏是相反的順序 – 2014-08-28 08:07:10
使用'iter.hasPrevious()'和'iter.previous ()'就像你用'next()'做的那樣 – alfasin 2014-08-28 08:07:56