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