public class RoundIterator implements Iterator<T> {
Iterator<T> iterator = Solution.super.iterator();
int ind = 0;
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public T next() {
try{
ind++;
return iterator.next();
}catch (Exception e){
ind = 0;
iterator = Solution.super.iterator();
return iterator.next();
}
}
@Override
public void remove() {
iterator.remove();
}
public Iterator<T> iterator() {
return new RoundIterator();
}
}package com.javarush.task.task37.task3701;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
/*
Круговой итератор
*/
public class Solution<T> extends ArrayList<T> {
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 RoundIterator implements Iterator<T> {
Iterator<T> iterator = Solution.super.iterator();
int cursore = 0;
@Override
public boolean hasNext() {
return iterator.hasNext();
}
@Override
public T next() {
try{
cursore++;
return iterator.next();
}catch (Exception e){
cursore = 0;
iterator = Solution.super.iterator();
return iterator.next();
}
}
@Override
public void remove() {
iterator.remove();
}
public Iterator<T> iterator() {
return new RoundIterator();
}
}
}