幽兰生空谷
--绝世独自开

使用Java代码stream().filter()对多个字段属性过滤筛选,并返回所有字段

背景介绍:

在ESB项目迁移中,遇到过滤数据的需求,这里使用Java代码stream().filter()实现。

解决方案:

参考代码如下:

public Student(String name, String age, String sex) {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getAge() {
            return age;
        }

        public void setAge(String age) {
            this.age = age;
        }

        public String getSex() {
            return sex;
        }

        public void setSex(String sex) {
            this.sex = sex;
        }

        @Override
        public String toString() {
            return "Student{" + "name='" + name + '\'' + ", age='" + age + '\'' + ", sex='" + sex + '\'' + '}';
        }

主函数:

public static void main(String[] args) {
            Student student1 = new Student("11", "11", "0");
            Student student2 = new Student("11", "22", "1");
            Student student3 = new Student("11", "22", "0");
            Student student4 = new Student("11", "33", "1");
            Student student5 = new Student("22", "33", "0");
            List<Student> students = new ArrayList();
            students.add(student1);
            students.add(student2);
            students.add(student3);
            students.add(student4);
            students.add(student5);
            System.out.println("--------------------对象去重-----------------------");
            List<Student> collect = students.stream().distinct().collect(toList());
            for (Student student : collect) {
                System.out.println(student);
            }
            System.out.println("-------------------根据多个字段去重--------------------------");
            ArrayList<Student> collect1 = students.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(student -> student.getName() + student.getAge()))), ArrayList::new));
            for (Student student : collect1) {
                System.out.println(student);
            }
            System.out.println("-------------------根据多个字段条件过滤筛选--------------------------");
            List<Student> filterCollect = students.stream().filter(s -> Objects.equals(s.getName(), "11") && Objects.equals(s.getSex(), "0")).collect(Collectors.toList());
            for (Student student : filterCollect) {
                System.out.println(student);
            }

执行结果:

赞(1) 打赏
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《使用Java代码stream().filter()对多个字段属性过滤筛选,并返回所有字段》
文章链接:https://www.itheibai.com/archives/1160
免责声明:根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途,网站会员捐赠是您喜欢本站而产生的赞助支持行为,仅为维持服务器的开支与维护,全凭自愿无任何强求。

评论 抢沙发

评论前必须登录!

 

养成“打赏”的好习惯,从我做起!

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册