【Java8新特性】- Stream流( 三 )

结果

【Java8新特性】- Stream流

文章插图
Stream的过滤与遍历stream的过滤是通过filter方法,通过实现匿名内部类new Predicate()的test方法,并且可以使用链式编程,持续过滤并且遍历,因为过滤不是终止运算 。然而forEach是实现匿名内部类new Consumer()的accept方法 。可以通过new的方式在通过idea来生成lambda表达式 。
public static void main(String[] args) {ArrayList<Student> students = new ArrayList<>();students.add(new Student("lyd", 99));students.add(new Student("lkj", 55));students.add(new Student("llm", 67));students.add(new Student("lss", 87));Stream<Student> stream = students.stream();stream.filter(student -> student.getName() != null).filter(student -> student.getScore() > 70).forEach(student -> System.out.println("name: " + student.getName() + " score: " + student.getScore()));}结果
【Java8新特性】- Stream流

文章插图
Stream的排序不仅Arrays以及数组能够实现排序甚至是重写排序规则,Stream流也是提供了相应的方法 。通过实现匿名内部类Comparator的compare方法 。
public static void main(String[] args) {ArrayList<Student> students = new ArrayList<>();students.add(new Student("lyd", 99));students.add(new Student("lkj", 55));students.add(new Student("llm", 67));students.add(new Student("lss", 87));Stream<Student> stream = students.stream();stream.sorted(new Comparator<Student>() {@Overridepublic int compare(Student o1, Student o2) {return o1.getScore() - o2.getScore();}}).forEach(new Consumer<Student>() {@Overridepublic void accept(Student student) {System.out.println("name: " + student.getName() + " score: " + student.getScore());}});/*lambda*/stream.sorted((o1, o2) -> o1.getScore() - o2.getScore()).forEach(student -> System.out.println("name: " + student.getName() + " score: " + student.getScore()));/*方法引入*/stream.sorted(Comparator.comparingInt(Student::getScore)).forEach(student -> System.out.println("name: " + student.getName() + " score: " + student.getScore()));}结果
【Java8新特性】- Stream流

文章插图
Stream的limit与skip在SQL中可以通过limit进行分页数据的获取,在java8的stream流中,limit是获取集合中的前几个值,而skip是跳过几个元素 。当我们需要获取第二到第三个元素的时候,可以通过skip(1)在通过limit(2)获取 。
public static void main(String[] args) {ArrayList<Student> students = new ArrayList<>();students.add(new Student("lyd", 99));students.add(new Student("lkj", 55));students.add(new Student("llm", 67));students.add(new Student("lss", 87));Stream<Student> stream = students.stream();stream.skip(1).limit(2).forEach(student -> System.out.println("name: " + student.getName() + " score: " + student.getScore()));}结果
【Java8新特性】- Stream流

文章插图
工作繁忙也需要学习 。创作不易,如有错误请指正,感谢观看!记得点赞哦!

经验总结扩展阅读