Я пытаюсь реализовать итерацию в классе, который содержит массив. Массив может содержать максимум 6 элементов. Кроме того, это кольцевой буфер, поэтому он может выглядеть как [x] [] [] [y] [x] [x], где 'y' - начальный индекс.
Если я использую итератор для просмотра элементов, он выводит только те элементы, которые действительно содержат значение. Моя проблема в том, что если я использую цикл for-each, он распечатывает все элементы.
Итак, это мой класс Iterator:
int current = startIndex;
@Override
public boolean hasNext() {
return elements[current] != null;
}
@Override
public T next() {
T t = (T) elements[current];
current = (current+1) % MAX_SET_LENGTH;
return t;
}
И вот эти два цикла яиспользуя:
// This works fine
Iterator it = set.iterator();
while (it.hasNext()) {
System.out.println(it.next());
}
// This goes through all the elements, even if null (so hasNext() should return false)
for (T element: set.getSet()) {
System.out.println(element);
}
Это из-за массива? Я хочу, чтобы цикл for-each рассматривал его не как массив из 6 слотов, а чтобы использовал мои методы hasNext () и next ().