Stream应用(三)——排序

三、Stream的排序

Stream通道流支持两种排除方式:sorted()自然排序;sorted(Comparator comp)。
sorted()自然排序 :产生一个新流,流中每个序列按自然排序的方式进行排序。
sorted(Comparator comp) :产生一个新流,流中的每个序列按自定义的比较器排序进行排序。

1、 sorted()自然排序

    @Test
    public void test1(){
        List<String> list = Arrays.asList("aaa", "bbb", "ccc");
        Stream<String> stream = list.stream()
                                    .sorted(); //把流中的每个序列进行自然排序
        stream.forEach(System.out::println);
    }

运行方法,输出结果如下
aaa
bbb
ccc

2、sorted(Comparator comp)定制排序
首先按用户的年龄进行比较,如果年龄相等,则按照用户的姓名进行比较。

    @Test
    public void test2(){
        List<User> users = Arrays.asList(
                new User("lzj", 28),
                new User("zhangsan", 30),
                new User("lisi", 28),
                new User("wanger", 28));

        Stream<User> stream = users.stream()
                                    .sorted((x, y) -> { //使流中的序列两两进行比较
                                        if (x.getAge() == y.getAge()) {
                                            return x.getName().compareTo(y.getName());
                                        }else{
                                            return x.getAge() > y.getAge() ? 1 : -1;
                                        }
                                    });
        stream.forEach(System.out::println);
    }

Sorted方法接受一个Comparator类型的参数,实例用Lambda表达式进行实现了该接口,重写的该接口中的compare方法。

运行方法,输出结果如下:

User [name=lisi, age=28]
User [name=lzj, age=28]
User [name=wanger, age=28]
User [name=zhangsan, age=30]
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值