public class test {
//收集
@Test
public void test1(){
//collect(Collector c),Collector是收集人的意思,将流转化为其他形式
//Collector接口中方法的实现决定了如何对流执行收集的操作(如收集到List,Set,Map)
//Collectors实用类提供了很多静态方法,可以方便地创建常见收集器实例,返回Collector
//Collectors中静态方法toList List<T>把流中元素收集到List
//例子:查找工资大于6000的员工,结果返回为一个List或者Set
//如果是放到List的当中
List<Employee> employees = EmployeeData.getEmployees();
List<Employee> employeeList = employees.stream().filter(e -> e.getSalary() > 6000).collect(Collectors.toList());
//这里用的是集合中的forEach方法
employeeList.forEach(System.out::println);//按照添加的顺序输出
System.out.println();
//如果是放到Set当中
Set<Employee> 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}