• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

用Java8中Stream实现不同集合过滤

● 编程语言 来源:当年的春天 1次浏览

强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan

【前言】

       从开源中国的对Java各个版本使用投票可以看出,目前Java8还是以67%的压倒性优势遥遥领先(Java 11 已正式发布,你在使用 Java 的哪个版本?);众所周知,Stream是Java8中的一大亮点,现在分享一下自己在工作中用它解决一个需求。

【业务场景及实现】

        一、业务场景:有一个学生类,有一个班级类,查出还未分配班级的学生

        二、实现:

             1、学生类

    public static class Student {
        String studentNo;
        String studentName;
        Integer age;

        //set get 方法
       
    }

             2、班级类

   public static class StuClass {
        String className;
        String studentNo;

        //set get 方法
    } 

             3、测试方法

    public static void main(String[] args) {

        List<Student> stuList = new ArrayList<>();
        Student stu1 = new Student();
        stu1.setStudentNo("0001");
        stu1.setStudentName("张三");
        stu1.setAge(10);
        stuList.add(stu1);
        Student stu2 = new Student();
        stu2.setStudentNo("0002");
        stu2.setStudentName("李四");
        stu2.setAge(11);
        stuList.add(stu2);

        List<StuClass> stuClassList = new ArrayList<>();
        StuClass stuClass1 = new StuClass();
        stuClass1.setClassName("一年级");
        stuClass1.setStudentNo("0001");
        stuClassList.add(stuClass1);
        StuClass stuClass2 = new StuClass();
        stuClass2.setClassName("一年纪");
        stuClass2.setStudentNo("0003");
        stuClassList.add(stuClass2);

        //筛选出没有分配班级的学生
        List<Student> collect = stuList.stream().filter(student -> stuClassList.stream().noneMatch(stuClass -> stuClass.getStudentNo().equals(student.getStudentNo()))).collect(Collectors.toList());

        System.out.println("学生学号:" + collect.get(0).getStudentNo());
        System.out.println("学生姓名:" + collect.get(0).getStudentName());

    }

             4、运行结果

【总结】

       1、Stream在处理大数据量的时候性能非常的棒;

       2、优雅的编程;


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)