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