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