java map 整数_如何将map < String、人>转换为map <字符串、整数>在Java流中收集?

假设你有一个名单,罗伯茨,保罗,理查兹等,这些人按名字分组

Map>

. 你想找到最老的保罗、罗伯特等…你可以这样做:

public static void main(String... args) {

List people = Arrays.asList(

new Person(23, "Paul"),

new Person(24, "Robert"),

new Person(32, "Paul"),

new Person(10, "Robert"),

new Person(4, "Richard"),

new Person(60, "Richard"),

new Person(9, "Robert"),

new Person(26, "Robert")

);

Person dummy = new Person(0, "");

var mapping = people.stream().collect(groupingBy(Person::getName, reducing(dummy, (p1, p2) -> p1.getAge() < p2.getAge() ? p2 : p1)));

mapping.entrySet().forEach(System.out::println);

}

我想得到一个映射

Map

而不是

Map

,我可以这样做:

var mapping = people.stream().collect(groupingBy(Person::getName, mapping(Person::getAge, reducing(0, (p1, p2) -> p1 < p2 ? p2 : p1))));

以上步骤是:

按名称分组

Map>

绘制地图

List

进入之内

List

在这些列表中查找最大整数。

我在想怎么做:

按名称分组到

map>

在每个组名中查找最年长的人,获取

map

转换

映射

进入之内

映射

. 我想在GroupingBy、Reducing和Mapping的链中做所有这些。

这是“伪代码”:

var mapping = people.stream().collect(groupingBy(Person::getName, reducing(dummy, (p1, p2) -> p1.getAge() < p2.getAge() ? p2 : p1 /*, have to write some other collector factory method here*/)));

我怎样才能做到这一点?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值