Я немного смущен тем, как реализовать пользовательский итератор для класса в Java. Я должен по существу сделать ArrayList без использования встроенных библиотек, уже доступных мне. Я понимаю основы создания класса, но у меня возникли проблемы с пониманием того, как заставить Iterator вписаться во все это. У меня есть следующий:Создание пользовательской Iterator Java?
Я создал универсальный класс, который реализует интерфейс итератора как таковые, он выглядит примерно так:
public class MyArrayList<T> implements Iterable<T> {
Я тогда получил создать класс под названием MyIterator, который в соответствии с формулировка документа является самостоятельным классом. Это кажется довольно прямо вперед, я сделать новый класс MyIterator и он реализует интерфейс итератора, так это выглядит примерно так:
public class MyIterator<T> implements Iterator<T>{
Моя путаница заключается в следующем. В документе говорится, что Iterator должен быть в своем собственном классе, но как тогда я могу получить доступ к элементам данных в «MyArrayList», чтобы полностью реализовать hasNext() и next(), например. Поскольку члены данных в базовом массиве являются частными (как и должно быть), я не вижу, как внешний класс может полностью реализовать эти методы. Я не понимаю, что требуется? По отдельному классу он все еще является частью класса «MyArrayList», но определяется по-разному?
Надеюсь, что это поможет, поскольку я сказал, что я понимаю, что я понимаю, что от меня требуется. Я просто не совсем уверен, где мой Итератор вписывается во все это.
'MyArrayList # iterator()' возвращает 'новый MyIterator (это)' или каким-то образом передает ссылку на себя и тем самым дает доступ к данным – zapl
Итак, MyIterator является частью класса MyArrayList или обычно он входит в его собственный , вот где я в замешательстве, я не совсем знаю «где» Итератор идет, если это имеет смысл. Я знаю, что должен делать метод iterator(), но я не знаю, где я должен добавить код для своего пользовательского итератора, чтобы он мог создать экземпляр и вызвать его, когда он мне понадобится. – Scott