Помогите плиз сбросить итератор в листе

Суть такова. Я хочу написать методы, при вызове которого будет возвращаться элемент листа. А после последнего элемента вернется первый, потом второй. То есть цикл и в обратном направлении. С методом next() вроде все понятно. А вот с prev() уже сложнее. В метод prev() итератор приходить на нулевом элементе. Я его пытаюсь поставить на последний. Но он не совсем корректно работает.

вот что я смог накодить.

    T next() {

    while (true) {
        if (listIterator.hasNext()) {
            return listIterator.next();
        } else {
            listIterator = list.listIterator();
        }
    }
}

T prev() {
    if (!listIterator.hasPrevious()) {
        for (int i = 0; i < list.size(); i++) {
            listIterator.next();
        }
    }
    while (true) {
        if (listIterator.hasPrevious()) {
            return listIterator.previous();
        }
    }

}

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Метод List.listIterator(int) устанавливает итератор на указанную позицию. В случае метода previous его следует установить после последнего элемента списка.

Если поправить остальные ошибки, то в вашей нотации методы могут выглядеть так:

    @Override
    public T next() {
        if (!listIterator.hasNext()) {
            listIterator = list.listIterator();
        }
        return listIterator.next();
    }

    @Override
    public T previous() {
        if (!listIterator.hasPrevious()) {
            listIterator = list.listIterator(list.size());
        }
        return listIterator.previous();
    }
→ Ссылка