这一篇是上一篇的续写,为了不让篇幅太长,所以分开写了,如果没看过的可以去看看强大的Stream API(二) Stream的(filter,limit,skip,map)等中间操作之一,接下来就继续了。
sorted() 产生一个新流,其中按自然顺序排序
sorted(Comparator comp) 产生一个新流,其中按比较器顺序排序
这我还是拿一个员工的集合
List<Employee> emps = Arrays.asList(
new Employee(101, "张三", 28, 9999),
new Employee(102, "李四", 49, 666),
new Employee(103, "王五", 38, 333),
new Employee(104, "赵六", 12, 7777),
new Employee(105, "田七", 6, 222)
);
1、sorted()
@Test
public void test2(){
emps.stream()
.map(Employee::getName)
.sorted()
.forEach(System.out::println);
}
根据名字去进行一个自然排序,也就是流中是什么顺序,然后输出的就是什么顺序,看一下排序的结果:
结果和我们期待的是一样的,在看看带有参数的排序的方式
@Test
public void test4() {
emps.stream()
.sorted((x,y) -> {
if(x.getAge() == y.getAge()) {
return x.getName().compareTo(y.getName());
}else{
return Integer.compare(x.getAge(),y.getAge());
}
})
.forEach(System.out::println);
}
这个排序是先按照年龄进行排序,如果年龄一样就按照名字进行排序
中间操作就差不多了,还有一点点大家看看应该就明白了,接下来我将讲一下终止操作。
强大的Stream API(四) Stream的终止操作