[jOOQ/jOOQ#18983] Avoid calling Stream::collect in Result::collect and Cursor::collect
This commit is contained in:
parent
e94a17ac47
commit
4abe0645b1
@ -75,7 +75,7 @@ abstract class AbstractCursor<R extends Record> extends AbstractResult<R> implem
|
||||
|
||||
@Override
|
||||
public final <X, A> X collect(Collector<? super R, A, X> collector) {
|
||||
return stream().collect(collector);
|
||||
return Tools.collect(this, collector);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -53,6 +53,8 @@ import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.function.BiConsumer;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collector;
|
||||
|
||||
import org.jooq.Attachable;
|
||||
@ -109,7 +111,7 @@ final class ResultImpl<R extends Record> extends AbstractResult<R> implements Re
|
||||
|
||||
@Override
|
||||
public final <X, A> X collect(Collector<? super R, A, X> collector) {
|
||||
return stream().collect(collector);
|
||||
return Tools.collect(this, collector);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -275,6 +275,7 @@ import java.util.function.Supplier;
|
||||
import java.util.regex.MatchResult;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collector;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@ -6851,6 +6852,20 @@ final class Tools {
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* [#18983] A simpler {@link Collector} accepting utility than
|
||||
* {@link Stream#collect(Collector)} for internal, sequential only use.
|
||||
*/
|
||||
static final <E, A, R> R collect(Iterable<E> iterable, Collector<? super E, A, R> collector) {
|
||||
A a = collector.supplier().get();
|
||||
|
||||
BiConsumer<A, ? super E> acc = collector.accumulator();
|
||||
for (E e : iterable)
|
||||
acc.accept(a, e);
|
||||
|
||||
return collector.finisher().apply(a);
|
||||
}
|
||||
|
||||
static final <E> Iterator<E> filter(Iterator<E> iterator, Predicate<? super E> predicate) {
|
||||
return filter(iterator, (e, i) -> predicate.test(e));
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user