我按汽车列表分组给那些有名字而一个没有名字的人。
cars.stream().collect(Collectors.groupingBy(car -> IdUtil.isEmpty(car.getName().equals(""))));
在此示例中,我将获得Map<Boolean, List<Cars>>
问题:
Map<Boolean, List<wheels>>
使用条件return((car.getName()。equals(“”))?FrontWheel?rearWheels;
感谢。
答案 0 :(得分:4)
对于#1,您可以使用can mapping
Collector
来将List<Cars>
映射到其他内容:
Map<Boolean,List<wheels>> map1 =
cars.stream()
.collect(Collectors.groupingBy(car -> IdUtil.isEmpty(car.getName().equals("")),
Collectors.mapping(car -> ((car.getName().equals(""))? car.getFrontWheel() : car.getRearWheels(),Collectors.toList()));
对于#2,将密钥更改为您想要的密钥应该没有问题:
Map<String,List<Cars>> map2 =
cars.stream()
.collect(Collectors.groupingBy(car -> IdUtil.isEmpty(car.getName().equals(""))?"Front":"Rear"));
当然,您可以将两者结合起来并获得Map<String,List<wheels>>
。
注意:此代码未经过测试,因此我可能会有一些拼写错误。