I get the expected output but it says timeoout validation.
package com.codegym.task.task37.task3701;
import java.util.ArrayList;
import java.util.Iterator;
/*
Circular iterator
*/
public class Solution<T> extends ArrayList<T> {
@Override
public Iterator<T> iterator() {
return new CircularIterator(this);
}
public static void main(String[] args) {
Solution<Integer> list = new Solution<>();
list.add(1);
list.add(2);
list.add(3);
int count = 0;
for (Integer i : list) {
//1 2 3 1 2 3 1 2 3 1
System.out.print(i + " ");
count++;
if (count == 10) {
break;
}
}
}
public class CircularIterator implements Iterator<T> {
private ArrayList<T> l;
int pos = -1;
public CircularIterator(ArrayList<T> l) {
this.l = l;
}
@Override
public boolean hasNext() {
return !l.isEmpty();
}
@Override
public T next() {
pos = nextIndex();
return l.get(pos);
}
public boolean hasPrevious() {
return !l.isEmpty();
}
public T previous() {
pos = previousIndex();
return l.get(pos);
}
public int nextIndex() {
if(pos==l.size()-1) {
return 0;
} else {
return pos+1;
}
}
public int previousIndex() {
if(pos<=0) {
return l.size()-1;
} else {
return pos-1;
}
}
}
}