新特性#
比较新的的特性就是流Stream ,和lambda表达式
图上面就是一些常用的方法,延迟方法
,就是对数据作处理中间方法,终结方法
就是最后符合好处理的数据结束方法
延迟方法
和lambda表达式的延迟加载的原理一样,它可以进行链式编程如list.().filter().map().limit(),可以一直点下去最后一步由方法为count
或者foreach
加载数据
stream集合遍历forEach#
遍历list直接list.stream().forEach
进行遍历
List<String> a=new ArrayList<>(); a.add("judy"); a.add("Tom"); //lambda表达式 a.stream().forEach(s -> System.out.println(s)); a.stream().forEach(s -> { System.out.println(s); System.out.println(2); });
集合复杂对象遍历
Student student = new Student(); student.setAddress("上海市黄浦区陆家浜路"); student.setName("judy"); student.setAge(26); List<Student> students = new ArrayList<>(); students.add(student); //lambda表达式 students.stream().forEach(student1 -> System.out.println(student1.name)); students.stream().forEach(student1 -> { System.out.println(student1.name); System.out.println(student1.age); System.out.println(student1.address); });
stream条件过滤filter#
使用list.stream().filter()进行过滤条件,为true
条件成立才会执行下面语句
List<String> a = new ArrayList<>(); a.add("judy"); a.add("Tom"); a.add(" "); //lambda表达式 是judy才打印 a.stream().filter(s -> s.equals("judy")).forEach(s -> System.out.println(s)); // 不是空才打印 a.stream().filter(s -> !s.isEmpty()).forEach(s -> System.out.println(s));
复杂对象多条件判断过滤
Student student = new Student(); student.setAddress("上海市黄浦区陆家浜路"); student.setName("judy"); student.setAge(26); List<Student> students = new ArrayList<>(); students.add(student); //lambda表达式 学生年纪大于28才打印 students.stream().filter(student1 -> student1.getAge()>28).forEach(student1 -> System.out.println(student1.name)); //多个条件过滤,同时成立 学生姓名是以张开头,并且长度等于3 ,lambda表达式 打印 students.stream().filter(s->s.getName().startsWith("张")).filter(s-> s.getName().length() == 3).forEach(System.out::println); students.stream().forEach(student1 -> { System.out.println(student1.name); System.out.println(student1.age); System.out.println(student1.address); });
https://www.cnblogs.com/kenx/p/15138599.html