Не работает ListIterator

Рейтинг: 0Ответов: 1Опубликовано: 16.04.2015

Простой пример, уже с ума схожу, не могу понять, что не так(вчера работало...). Подскажите, почему данный кусок кода не выводит результата.

public class Collections {
    public static void main(String[] args) {
        ArrayList<Integer> al=new ArrayList<Integer>();
        al.add(1);
        al.add(2);
        al.add(3);
        al.add(4);
        al.add(5);
        al.add(6);
        ListIterator<Integer> li=al.listIterator();

        while(li.hasPrevious()){
            System.out.println(li.previous());
        }
    }
}

Ответы

▲ 1Принят

li.hasPrevious() - выдает true если итератор может сдвинуться на один элемент назад. При этом изначально итератор указывает на нулевой элемент и соответственно у него нет -1 элемента, поэтому li.hasPrevious() всегда возвращает false в твоём случае.

Обычно используются методы hasNext() и next(). Если же тебе необходимо именно так пройти по листу, то получай итератор так al.listIterator(al.size()) и твой код будет выводить элементы листа в обратном порядке.