Обратимый итератор

общедоступный итератор ReversibleIterator();

может ли кто-нибудь помочь мне сделать этот метод? плохо мириться с тем, что я сделал до сих пор

ReversibleIterator должен вести себя следующим образом. Первый вызов следующего или предыдущего должен возвращать первый или последний элемент списка соответственно. Последующие вызовы следующего/предыдущего должны возвращать элемент, который является следующим/предыдущим по отношению к предшествующему вызову следующего/предыдущего. Например, если два вызова next приводят к воскресенью и понедельнику, то следующий вызов предыдущего должен вернуть воскресенье.

public ReversibleIterator<T> iterator() {
    PublicLinkedList<T> list = new PublicLinkedList<T>();
    PublicNode<T> node = list.head;
    while (node.getElement() != null) {
        list.add(node.getElement());
        node = node.getNext();
    }
    ReversibleIterator<T> rIter = new ReversibleIterator<T>(list);
    return rIter;
}

person john    schedule 04.04.2011    source источник
comment
Вы смотрели на ListIterator, который можно перемещать вперед и назад?   -  person Peter Lawrey    schedule 04.04.2011
comment
Также обратите внимание, что в вашем примере внутренний PublicLinkedList всегда пуст (если только конструктор по умолчанию не делает что-то очень неожиданное внизу). Вы сделали отступ, чтобы он был параметром? Переменная-член?   -  person Dilum Ranatunga    schedule 05.04.2011


Ответы (1)


Java ListIterator — это то, что вам нужно. Большое преимущество: он уже существует.

Вы можете получить его из любого списка в Java, вызвав ссылку listIterator().

person Daniel    schedule 04.04.2011