为了账号安全,请及时绑定邮箱和手机立即绑定

在从流中收集的地图中将a列为值

在从流中收集的地图中将a列为值

至尊宝的传说 2021-05-03 17:35:02
我正在尝试从“高级操作”部分的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)));我得到的错误是:错误:(32、25)Java:不兼容的类型:推理变量U具有不兼容的绑定相等约束:java.lang.String下界:java.util.List我该如何运作?
查看完整描述

2 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

结合使用Collectors.groupingBy和Collectors.mapping


Map<Integer, List<String>> result = persons.stream()

            .collect(Collectors.groupingBy(p -> p.age,

                    Collectors.mapping(p -> p.name, Collectors.toList())));


查看完整回答
反对 回复 2021-05-19
?
交互式爱情

TA贡献1712条经验 获得超3个赞

你可以这样做


Map<Integer, List<String>> namesByAge = persons.stream()

    .collect(Collectors.groupingBy(Person::getAge, Collectors.mapping(Person::getName, Collectors.toList())));

您必须首先根据人员的年龄将其分组,然后获取具有该年龄的人员的姓名,最后使用下游收集器进行收集。


查看完整回答
反对 回复 2021-05-19
  • 2 回答
  • 0 关注
  • 117 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信