Обратный упорядоченный список с использованием предыдущего итератора
Я хочу начать в конце списка и повторить его, используя предыдущий метод ListIterators
public void add(E obj) {
ListIterator <E> iter = theList.listIterator();
while (iter.hasNext()) {
if (obj.compareTo(iter.next()) < 0) {
iter.previous();
iter.add(obj);
return;
}
}
iter.add(obj);
}
Каждый раз, когда я запускаю свой тестовый класс, это итераторы с самого начала.
2 ответа
Чтобы получить итератор в обратном порядке, используйте метод list.listIterator(int index), этот метод будет возвращать итератор из указанной позиции, вы должны указать размер списка, то есть индекс последнего элемента. после этого вы можете использовать методы hasPrevious() и previous(). это будет работать,
// declare arraylist
ArrayList<...> a = new ArrayList<...>();
// Add elements to list.
// Generate an iterator. Start just after the last element.
ListIterator li = a.listIterator(a.size());
// Iterate in reverse.
while(li.hasPrevious()) {
System.out.println(li.previous());
}
ListIterator, как и все итераторы, всегда начинается с начала. Предыдущий метод учитывает менее ограниченное движение, но он все еще начинается в начале. Ваше общее намерение неясно, поэтому, возможно, вы ошиблись, но самым простым способом было бы сначала изменить порядок в списке, а затем выполнить итерацию.
ОБНОВЛЕНИЕ Неважно, Радж есть.