package com.constellio.data.utils; import java.util.Iterator; import java.util.List; public class InfiniteListIterator<V> extends LazyIterator<V> { List<V> values; Iterator<V> currentIterator; public InfiniteListIterator(List<V> values) { this.values = values; } @Override protected synchronized V getNextOrNull() { if (currentIterator == null || !currentIterator.hasNext()) { currentIterator = values.iterator(); } return currentIterator.next(); } public static <V> Iterator<V> infinitelyIteratingOverList(List<V> values) { return new InfiniteListIterator<>(values); } }