Jestem nieco zdezorientowany, jak zaimplementować niestandardowy iterator dla klasy w Javie. Muszę zasadniczo utworzyć ArrayList bez korzystania z wbudowanych bibliotek, które już mam do dyspozycji. Rozumiem podstawy tworzenia klasy, ale mam problem ze zrozumieniem, jak dopasować Iterator do tego wszystkiego. Mam następujący:Tworzenie niestandardowej Iterator Java?
Stworzyłem rodzajowe klasy, która implementuje interfejs iterowalny jako taki wygląda mniej więcej tak:
public class MyArrayList<T> implements Iterable<T> {
Mam następnie dostał się do utworzenia klasy o nazwie MyIterator która według sformułowanie dokumentu jest samodzielną klasą. Wydaje się to dość proste robię nową klasę o nazwie MyIterator i mieć go implementować interfejs iteratora tak to wygląda mniej więcej tak:
public class MyIterator<T> implements Iterator<T>{
My zamieszanie leży poniżej. Dokument mówi, że Iterator musi być w swojej klasie, ale jak mam uzyskać dostęp do elementów danych w "MyArrayList", aby w pełni zaimplementować na przykład metody hasNext() i next(). Ponieważ elementy danych w podstawowej tablicy są prywatne (tak jak powinny być), nie widzę, w jaki sposób klasa zewnętrzna może w pełni wdrożyć te metody. Czy nie rozumiem, co jest wymagane? Czy przez oddzielną klasę nadal jest częścią klasy "MyArrayList", ale definiuje się ją inaczej?
Mam nadzieję, że pomaga, jak powiedziałem, myślę, że rozumiem, co jest wymagane ode mnie, po prostu nie jestem dokładnie pewien, gdzie mój Iterator pasuje do tego wszystkiego.
'MyArrayList # iterator()' zwraca 'nowy MyIterator (this)' albo jakoś przechodzi odniesienie do siebie i tym samym daje dostęp do danych – zapl
Więc jest częścią MyIterator z MyArrayList klasy czy też normalnie iść w jego własnym , to jest miejsce, w którym jestem zdezorientowany, nie bardzo wiem "gdzie" idzie Iterator, jeśli to ma jakiś sens. Wiem, co powinna zrobić metoda iterator(), ale nie wiem, gdzie powinienem dodać kod dla mojego niestandardowego iteratora, aby mógł utworzyć jego instancję i wywołać go, gdy jest to potrzebne. – Scott