【发布时间】:2019-11-10 08:39:47
【问题描述】:
我知道我的问题与Count int occurrences with Java8 非常相似 ,但我还是解决不了我的案子,这一定更容易解决。
需要计算整数流中整数重复的次数(将来自文件,可能多达 1000000 个整数)。我认为创建一个映射可能很有用,其中 Integer 将是一个 Key,出现次数将是一个值。
例外是
错误:(61, 66) java: 接口中的方法收集 java.util.stream.IntStream 不能应用于给定类型;
必需的: java.util.function.Supplier,java.util.function.ObjIntConsumer,java.util.function.BiConsumer 找到:java.util.stream.Collector> 原因:不能 推断类型变量 R (实际参数列表和形式参数列表的长度不同)
但是,在 Java 8 中,有一个 Collectors.groupingBy,应该就足够了
Collector<T, ?, Map<K, D>> groupingBy(Function<? super T, ? extends K> classifier,Collector<? super T, A, D> downstream)
问题是我的代码没有编译,我看不到 - 为什么。 我将其简化为:
Map<Integer,Integer> result = IntStream.range(0,100).collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
不编译的原因是什么? 提前谢谢你:)
【问题讨论】:
-
Multiset<Integer> occurrences = HashMultiset.create(stream::iterator)使用番石榴。