Java 8 には、プリミティブ ストリームでStream::collect(Collector)を使用する方法はありますか?
通常、Stream<Integer>
例として、収集するための 2 つの方法があります。
<R,A> R collect(Collector<? super T,A,R> collector)
<R> R collect(Supplier<R> supplier, BiConsumer<R,? super T> accumulator, BiConsumer<R,R> combiner)
ただしIntStream
、収集する方法は 1 つだけです。
サンプルコードとして、次のものがあります。
@Override
public void run() {
result = LongStream.range(1, maximum).boxed()
.collect(Collectors.toMap(i -> i, i -> (int)Iterators.longStream(new CollatzGenerator(i)).count()))
.entrySet().stream()
.max(Comparator.comparingLong(Map.Entry::getValue))
.get().getKey();
}
ご覧のとおり、メソッドを使用できるようにするために、最初にプリミティブをボックス化しますCollectors.
。
プリミティブを使用しても同じコードを使用できる方法はありますCollectors.toMap
か?