package com.annimon.stream.operator;
import com.annimon.stream.internal.Operators;
import com.annimon.stream.iterator.LsaExtIterator;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
public class ObjSorted<T> extends LsaExtIterator<T> {
private final Iterator<? extends T> iterator;
private final Comparator<? super T> comparator;
private Iterator<T> sortedIterator;
public ObjSorted(Iterator<? extends T> iterator, Comparator<? super T> comparator) {
this.iterator = iterator;
this.comparator = comparator;
}
@Override
protected void nextIteration() {
if (!isInit) {
final List<T> list = Operators.<T>toList(iterator);
Collections.sort(list, comparator);
sortedIterator = list.iterator();
}
hasNext = sortedIterator.hasNext();
if (hasNext) {
next = sortedIterator.next();
}
}
}