怎么用Lambda进行分组

Jessica丶 发布于 03/04 15:43
阅读 804
收藏 0

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

Stu里面有3个属性id,name,sex

StuGroup里面有2个属性sex,List<Stu>

Stu stu1 = new Stu(1,'张三',0);
Stu stu2 = new Stu(2,'李四',0);
Stu stu3 = new Stu(3,'王五',1);
List<Stu> list = new ArrayList();
list.add(stu1);
list.add(stu2);
list.add(stu3);

现在想将list根据sex分组转换成List<StuGroup>,即返回status=0,里面集合包括stu1和stu2,status=1,里面集合包括stu3,这个用Lambda要怎么实现

 

加载中
2
sxgkwei
sxgkwei

前两天有个提问:https://www.oschina.net/question/3447476_2325274  也是你。别人给了你答案,你就这都没学会?

今天又问一个更简单的,还是不会,或者根本就没打算学会,就是不停的白嫖劳动力啊?

别人给你写好代码,你就一个 ctrl+c, ctrl+v 。你的工作就完成了,甚至还体现你技术牛皮了,还赚到今日份的工资了?

浪花浪浪
浪花浪浪
回复 @Jessica丶 : 就像一道题你会做了,下一次换了个角度问,你就不会做了? 总不能下次java更新了,你就要完整的全部学习一遍啊!你琢磨明白了原理,其他的看不看问题不大,顶多也就是熟练度的事情。
sxgkwei
sxgkwei
回复 @Jessica丶 : 胜龙写好了。你 ctrl+c/v 一下吧
Jessica丶
Jessica丶
回复 @sxgkwei : 大哥干啥这么暴躁:sweat:
sxgkwei
sxgkwei
回复 @Jessica丶 : 上一个问题,别人代码为什么那么写,每一步写的含义是什么,弄懂没?没弄懂,也没打算弄懂?弄懂了那个,这个自然就会。指望次次别人直接给现成代码,就是想白嫖劳动力。虽然不是简单的ctrl+c/v,但如果只打算ctrl+c/v,你又何必入这行呢?如果不是这行的人,那就给钱找人做呗,自己何必折腾呢?
Jessica丶
Jessica丶
这不一样的,一个是转map,这个是转实体的,会是简单的ctrl+c, ctrl+v吗?
0
ducat7
ducat7

Lambda是一种简写代码语法糖,你的需求更应该关注的是Java8 Stream的用法,如:groupby、toList等。

0
胜龙
胜龙

list.stream.collect(Collectors.groupingBy(Stu::id));

0
osc_98982162
osc_98982162
List<StuGroup> collect = list.stream().collect(Collectors.groupingBy(Stu::getSex)).entrySet().stream()
        .map(set -> {
            StuGroup stuGroup = new StuGroup(set.getKey(), set.getValue());
            return stuGroup;
        }).collect(Collectors.toList());

 

0
osc_98982162
osc_98982162

cv就完了 工资分我一半😀

0
江河君
江河君

按照性别分组,结果放在map里面,map的key就是性别的值

Map<String,List<Stu>> map = list.stream().collect(Collectors.groupingBy(Stu::getSex));

 

0
osc_55989771
osc_55989771

引用来自“江河君”的评论

按照性别分组,结果放在map里面,map的key就是性别的值

Map<String,List<Stu>> map = list.stream().collect(Collectors.groupingBy(Stu::getSex));

 

正解

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部