Stream的终止操作:收集

public class test {

    //收集
    @Test
    public void test1(){
        //collect(Collector c),Collector是收集人的意思,将流转化为其他形式
        //Collector接口中方法的实现决定了如何对流执行收集的操作(如收集到List,Set,Map)
        //Collectors实用类提供了很多静态方法,可以方便地创建常见收集器实例,返回Collector
        //Collectors中静态方法toList List把流中元素收集到List

        //例子:查找工资大于6000的员工,结果返回为一个List或者Set

        //如果是放到List的当中
        List employees = EmployeeData.getEmployees();
        List employeeList = employees.stream().filter(e -> e.getSalary() > 6000).collect(Collectors.toList());

        //这里用的是集合中的forEach方法
        employeeList.forEach(System.out::println);//按照添加的顺序输出

        System.out.println();

        //如果是放到Set当中
        Set employeeSet = employees.stream().filter(e -> e.getSalary() > 6000).collect(Collectors.toSet());
        employeeSet.forEach(System.out::println);//Collection实现了Iterable,而forEach方法是定义在Iterable当中的
        //Set本身无序,所以输出的顺序会变
    }
}

输出结果为:

Employee{id=1001, name='马化腾', age=34, salary=6000.38}
Employee{id=1002, name='马云', age=12, salary=9876.12}
Employee{id=1004, name='雷军', age=26, salary=7657.37}
Employee{id=1006, name='比尔盖茨', age=42, salary=9500.43}

Employee{id=1001, name='马化腾', age=34, salary=6000.38}
Employee{id=1002, name='马云', age=12, salary=9876.12}
Employee{id=1006, name='比尔盖茨', age=42, salary=9500.43}
Employee{id=1004, name='雷军', age=26, salary=7657.37}

你可能感兴趣的:(JavaSE学习记录)