JAVA8 Stream创建、筛选

用到的对象:

package com.zwq;

import lombok.Data;

/**
 * @author zhangwq
 */
@Data
public class Student {
    private int id;
    private String name;
    private String clazz;
    private Integer age;
    private Integer grade;

    public Student(String name, String clazz) {
        this.name = name;
        this.clazz = clazz;
    }

    public Student() {
    }

    public Student(int id, String name, String clazz, int age, Integer grade) {
        this.id = id;
        this.name = name;
        this.clazz = clazz;
        this.age = age;
        this.grade = grade;
    }
}

集合讲的是数据,流讲的是计算
* ①Stream 自己不会存储元素。
* ②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。
* ③Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。

   @Test
   //创建
    public void test(){
        List<String> list = new ArrayList<>();
        Stream<String> stream = list.stream();
        System.out.println(stream.count());

        //创建流、中间过程、终止

        //生成无限流
        Stream.generate(()->(int)(Math.random()*100)).limit(10).forEach(System.out::println);

        //迭代生成无限流
        Stream.iterate(0,e->e+2).limit(5)
                .forEach(System.out::println);
    }

    
    @Test
    //筛选
    public void test2(){
        List<Student> students = Arrays.asList(
                new Student(1,"zhangsan","class1",18,60),
                new Student(2,"lisi","class1",18,59),
                new Student(3,"wangwu","class2",18,100),
                new Student(3,"wangwu","class2",18,100),
                new Student(3,"wangwu","class2",18,100),
                new Student(14,"zhaoliu","class2",18,80));
        //filter(Predicate p) 接收 Lambda , 从流中排除某些元素。
        //distinct() 筛选,通过流所生成元素的 hashCode() 和 equals() 去
        //除重复元素
        //limit(long maxSize) 截断流,使其元素不超过给定数量。
        //skip(long n) 跳过元素,返回一个扔掉了前 n 个元素的流。若流中元素
        //不足 n 个,则返回一个空流。与 limit(n) 互补
        Stream<Student> studentStream = students.stream().filter(e->e.getGrade()>=60).distinct().limit(3).skip(2);
        studentStream .forEach(System.out::println);
    }

猜你喜欢

转载自blog.csdn.net/zwq_zwq_zwq/article/details/82085786