要映射的java数组:找不到适合收集器的方法。托马普
我想使用Java 8流将数组转换为映射:
String[] arr = {"two", "times", "two", "is", "four"};
Arrays.stream(arr).collect(Collectors.toMap(s -> s, 1, Integer::sum);
s -> s
部分被标记为错误
no instance(s) of type variable(s) T, U exists so that Integer conforms to Function
# 1 楼答案
实际上
1
就是错误。值1
不能用作valueMapper
,其类型应为Function<? super T, ? extends U>
在您的示例中,值映射器应该是一个函数,它接受
Stream
(aString
)的元素并返回Integer
。lambda表达式s -> 1
就可以了以下工作:
输出: