【发布时间】:2014-10-03 11:47:47
【问题描述】:
在 Java 8 中是否有任何方法可以在原始流上使用 Stream::collect(Collector)?
通常以Stream<Integer> 为例有两种收集方法:
<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只有一种收集方式:
现在作为示例代码,我有以下内容:
@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 相同的代码
?
【问题讨论】:
-
既然地图无论如何都会包含对象,那有什么好处呢?
标签: java java-8 primitive boxing java-stream