java将列表a作为从流收集的映射中的值
我正试图从高级操作部分修改来自http://winterbe.com/posts/2014/07/31/java8-stream-tutorial-examples/的源代码,以获得结果类型Map<Integer, List<String>>
,而不是Map<Integer, String>
,其中值是多个值的串联字符串
List<Person> persons =
Arrays.asList(
new Person("Max", 18),
new Person("Peter", 23),
new Person("Pamela", 23),
new Person("David", 12)
);
Map<Integer, String> collect = persons.stream()
.collect(Collectors.toMap(p -> p.age, p -> Arrays.asList(p -> p.name)));
我得到的错误是:
Error:(32, 25) java: incompatible types: inference variable U has incompatible bound
equality constraints: java.lang.String
lower bounds: java.util.List
我如何让它工作
# 1 楼答案
使用
Collectors.groupingBy
和Collectors.mapping
的组合# 2 楼答案
你可以这样做
您必须首先根据年龄对人员进行分组,然后获取该年龄人员的姓名,最后使用下游收集器进行收集