对流的元素进行计数
2022-09-03 15:39:36
我想数一的不同元素,我想知道为什么
Stream<String> stream = Stream.of("a", "b", "a", "c", "c", "a", "a", "d");
Map<String, Integer> counter1 = stream.collect(Collectors.toMap(s -> s, 1, Integer::sum));
不起作用。日食告诉我
类型收集器中的方法 toMap(Function, Function, BinaryOperator) 不适用于参数 (( s) -> {}, int, Integer::sum)
顺便说一句,我知道这个解决方案:
Map<String, Long> counter2 = stream.collect(Collectors.groupingBy(s -> s, Collectors.counting()));
所以我有两个问题:
- 我的第一种方法有什么错误?
- 您将如何实现这样的计数器?
编辑:我自己解决了第一个问题:
Map<String, Integer> counter1 = stream.collect(Collectors.toMap(s -> s, s -> 1, Integer::sum));
Java 期望将函数作为第二个参数。