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

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 用Java8中Stream实现不同集合过滤

强烈推荐一个大神的人工智能的教程:http://www.captainai.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、优雅的编程;


相关文章
|
10月前
|
Java API 数据处理
Java新特性:使用Stream API重构你的数据处理
Java新特性:使用Stream API重构你的数据处理
|
10月前
|
Java 大数据 API
Java Stream API:现代集合处理与函数式编程
Java Stream API:现代集合处理与函数式编程
430 100
|
10月前
|
Java API 数据处理
Java Stream API:现代集合处理新方式
Java Stream API:现代集合处理新方式
397 101
|
10月前
|
并行计算 Java 大数据
Java Stream API:现代数据处理之道
Java Stream API:现代数据处理之道
506 101
|
10月前
|
算法 Java
50道java集合面试题
50道 java 集合面试题
|
9月前
|
存储 算法 安全
Java集合框架:理解类型多样性与限制
总之,在 Java 题材中正确地应对多样化与约束条件要求开发人员深入理解面向对象原则、范式编程思想以及JVM工作机理等核心知识点。通过精心设计与周密规划能够有效地利用 Java 高级特征打造出既健壮又灵活易维护系统软件产品。
231 7
|
9月前
|
Java Unix Go
【Java】(8)Stream流、文件File相关操作,IO的含义与运用
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。!但本节讲述最基本的和流与 I/O 相关的功能。我们将通过一个个例子来学习这些功能。
341 1
|
10月前
|
存储 Java Go
对比Java学习Go——函数、集合和OOP
Go语言的函数支持声明与调用,具备多返回值、命名返回值等特性,结合`func`关键字与类型后置语法,使函数定义简洁直观。函数可作为一等公民传递、赋值或作为参数,支持匿名函数与闭包。Go通过组合与接口实现面向对象编程,结构体定义数据,方法定义行为,接口实现多态,体现了Go语言的简洁与高效设计。
290 4
|
10月前
|
存储 数据可视化 Java
Java Stream API 的强大功能
Java Stream API 是 Java 8 引入的重要特性,它改变了集合数据的处理方式。通过声明式语法,开发者可以更简洁地进行过滤、映射、聚合等操作。Stream API 支持惰性求值和并行处理,提升了代码效率和可读性,是现代 Java 开发不可或缺的工具。
197 0
Java Stream API 的强大功能
|
11月前
|
存储 缓存 安全
Java集合框架(三):Map体系与ConcurrentHashMap
本文深入解析Java中Map接口体系及其实现类,包括HashMap、ConcurrentHashMap等的工作原理与线程安全机制。内容涵盖哈希冲突解决、扩容策略、并发优化,以及不同Map实现的适用场景,助你掌握高并发编程核心技巧。