Реализация Iterable в двусвязном списке в Java - PullRequest
1 голос
/ 28 января 2011

Я создал DoublyLinkedList, который имеет все обычные методы (add (), remove (), isEmpty (), size () и т. Д.)

В этом списке содержатся поля ListNode, которые имеют следующие поля ListNode, ListNode prev и T inf. (здесь все очень просто / классика)

Мой вопрос: как мне сделать мою DLL повторяемой? Из того, что я собрал, мне нужно реализовать интерфейс Iterable и определить метод iterator (), который возвращает Iterator.

Это та часть, которую я не понимаю. Что делает этот метод iterator ()? Как мне это написать?

Любые указатели приветствуются. заранее спасибо PS: я знаю, что должен использовать контейнеры, уже имеющиеся в пакетах java, но в этом случае мне нужно сделать это самому.

1 Ответ

1 голос
/ 28 января 2011

Метод iterator() вернет экземпляр дополнительного класса. Это позволит отследить, на каком узле был итератор, и позволит вам проверить наличие большего количества узлов (через hasNext()) и перейти к следующему узлу (через next()).

Этот имеет , чтобы быть отдельным объектом от самого списка, поскольку может быть несколько итераторов, проходящих по одной и той же коллекции одновременно. По сути, это дополнительная часть состояния: где вы находитесь. Не забывайте, что итератор начинается с до первого элемента, логически - первый вызов next() перемещается к первому элементу.

...