У меня есть список объектов и вы хотите итерации вперед и назад, пока не будет найден элемент, который будет «действительным».Как перечислить список в обоих направлениях?
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)? –
http://stackoverflow.com/questions/2102499/iterating-through-a-list-in-reverse-order-in-java :: здесь для обратного порядка –
использовать 'iter.hasPrevious()' и 'iter.previous() 'как вы делаете с' next() ' – alfasin