Вот моя реализация iterator
над ArrayList
:Проблема реализации ArrayList итератора в Java
public class MyClass {
List<E> list = new ArraList<E>();
public Iterator<E> iterator() {
return new MyIterator<E>();
}
private class MyIterator<T> implements Iterator<E> {
int index;
public MyIterator() {
index = 0;
}
public E next() {
if (hasNext()){
index++;
return list.get(index + 1);
}
else
throw new NoSuchElementException();
}
public boolean hasNext() {
if ((list.get(index + 1) != null) && (index < list.size() -1)){
index++;
return true;
}
else
return false;
}
public void remove() {
throw new UnsupportedOperationException();
}
}
}
Однако, хотя логика выглядит хорошо для меня, эта реализация не так, потому что он не работает должным образом.
Мой вопрос: что я делаю неправильно, и как я могу его изменить, чтобы он работал правильно?
UPDATE:
public E next() {
if (index == 0) {
index++;
return list.get(0);
}
else if (hasNext()) {
index++;
return list.get(index);
}
else
throw new NoSuchElementException();
}
мне удалось каким-то образом, заставить его работать, но теперь следующий метод пропускает индексы массива. Как я могу это исправить ?
Что вы подразумеваете под "правильной работой"? Возможно, вам будет легче выяснить, что происходит, если вы пишете единичный тест для своего кода. – Trisha
Что значит «это не работает должным образом» - будьте конкретны. Кроме того, что такое «PacoteIterator» – NoseKnowsAll
@Trisha, следующий метод возвращает 'ArrayOutOfBoundsException'i, не знаю почему – laker001