這一篇是上一篇的續(xù)寫应结,為了不讓篇幅太長,所以分開寫了泉唁,如果沒看過的可以去看看強(qiáng)大的Stream API(二) Stream的(filter鹅龄,limit,skip亭畜,map)等中間操作之一扮休,接下來就繼續(xù)了。
sorted() 產(chǎn)生一個新流贱案,其中按自然順序排序
sorted(Comparator comp) 產(chǎn)生一個新流肛炮,其中按比較器順序排序
這我還是拿一個員工的集合
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);
}
根據(jù)名字去進(jìn)行一個自然排序,也就是流中是什么順序宝踪,然后輸出的就是什么順序,看一下排序的結(jié)果:
image.png
結(jié)果和我們期待的是一樣的碍扔,在看看帶有參數(shù)的排序的方式
@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);
}
這個排序是先按照年齡進(jìn)行排序瘩燥,如果年齡一樣就按照名字進(jìn)行排序
image.png
中間操作就差不多了不同,還有一點(diǎn)點(diǎn)大家看看應(yīng)該就明白了厉膀,接下來我將講一下終止操作。
強(qiáng)大的Stream API(四) Stream的終止操作