前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重

Stream流用于按照对象中某一属性来对集合去重+简单数据类型集合的去重

作者头像
掉发的小王
发布2022-07-11 15:20:32
1.5K0
发布2022-07-11 15:20:32
举报
文章被收录于专栏:小王知识分享小王知识分享

上次对Stream流来进行分组的文章很多人看,想看的可以来这: Stream流来进行集合分组 这次小编又带来Stream的去重,话不多数,直接上代码:

这是对简单数据类型的去重

代码语言:javascript
复制
		//字符串集合进行简单的去重(其他数据类型去重一样)
        List<String> stringList = Arrays.asList("伽罗", "貂蝉", "芈月", "伽罗");

        //jdk1.8Stream来去重
        stringList = stringList.stream().distinct().collect(Collectors.toList());

        System.out.println(JSON.toJSONString(stringList));

        /**
         * 执行结果:["伽罗","貂蝉","芈月"]
         *
         */

对对象中的某一个属性来进行去重:

代码语言:javascript
复制
/**
实体类
*/
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data//lombok简化代码
@AllArgsConstructor
@NoArgsConstructor
public class Hero {

    //英雄id
    private int id;

    //名字
    private String name;

    //类型
    private String type;
}
代码语言:javascript
复制
		//进行对象中的某个属性进行去重
        List<Hero> list = Arrays.asList(
                new Hero(001,"孙悟空","刺客"),
                new Hero(002,"韩信","刺客"),
                new Hero(003,"伽罗","射手"),
                new Hero(004,"阿狸","射手"),
                new Hero(005,"貂蝉","法师"));

        //需求:每一个职业只能保留一个英雄
        //去重规则,先出现的保存,后出现的被去掉
        list = list.stream()
                .collect(Collectors.collectingAndThen(
                        Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Hero::getType))), ArrayList::new));

        System.out.println(JSON.toJSONString(list));

        /**
         * 执行结果:[{"id":1,"name":"孙悟空","type":"刺客"},{"id":3,"name":"伽罗","type":"射手"},
         * {"id":5,"name":"貂蝉","type":"法师"}]
         */

这样就学会了,直接复制代码运行一下,照猫画虎不是难题,有什么问题请留言,还请各位大佬批评指正!!!!

Q.E.D.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档