我正在玩 Java 8,我知道通过阅读文档这一定是可能的,但我只是不知道如何去做。
我有以下工作代码:
long factorProduct = LongStream.rangeClosed(1, maxFactor)
.filter(this::isOptimalFactor)
.reduce((i, j) -> i * j)
.getAsLong();
List<Long> primeFactors = primeFactors(factorProduct);
重要的是我有一个 List<Long>
可能在某些 Long
上有重复项数。
现在我想把它转换成 Map<Long, Long>
以元素作为键,以出现的值作为值。
我认为:
Map<Long, Long> primeFactorCount = primeFactors.stream()
.collect(Collectors.counting());
会起作用,但它不会。我查了例子in the java.util.stream.Collectors documentation .
我需要如何使用这些功能?
最佳答案
如果你想对元素进行分组,你必须使用groupingBy
:
import static java.util.stream.Collectors.*;
Map<Long, Long> primeFactorCount = primeFactors.stream()
.collect(groupingBy(p -> p, counting()));
关于java - 将 List<Long> 转换为计算出现次数的 Map<Long, Long>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21974369/