stream流倒序排序_java排序之中文排序

本文介绍了在Java8中如何使用Stream流进行中文倒序排序,强调了在网上的大部分示例仅适用于英文排序。文章提到了两种排序方式,一种是Stream流排序,另一种是使用Comparator排序,作者推荐使用Comparator,因为它能处理中文排序。文章包含一个main测试类和User实体类的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一前言

前天公司有个同事有一个这样的一个需求,就是按照中文排序。看似很普通的需求,但是要实现的话,还是有一点点的困难,因为网上的例子不多,都是那种清一色的copy,答案都一样,只能应用于英文的排序。java8的流排序目前还没找到合适的方法。

这个写法也是公司的一个大佬对我说的,挺常见的需求,所以有必要记录一下下。

注意:数据库也有办法支持中文排序。我们这里只讲代码中如何实现。

二如何实现?

两个排序。一个java8的流排序,一个是Comparator排序。

推荐Comparator排序!!!因为中文可以处理。

main测试类

public static void main(String[] args) throws Exception{        List arrayList = new ArrayList();        User user1 = new User("15.88","我");        User user2 = new User("15.88","擦");        User user3 = new User("15.88","嘻嘻");        User user4 = new User("15.88","看");        arrayList.add(user1);arrayList.add(user2);arrayList.add(user3);arrayList.add(user4);        System.out.println(arrayList);            /*java8排序*/        /*arrayList = arrayList.stream()                .sorted(                        Comparator.comparing((User e) -> Double.valueOf(e.getScore())).reversed()                                .thenComparing((User e) -> e.getName())                ).collect(Collectors.toList());        System.out.println(arrayList);*/                          /*分数倒序,名字正序*/        Comparator compareIns = Collator.getInstance(java.util.Locale.CHINA);        arrayList.sort((o1, o2) -> {            int perCom = Double.valueOf(o2.getScore()).compareTo(Double.valueOf(o1.getScore()));            if (perCom == 0) {                return compareIns.compare(o1.getName(), o2.getName());            } else {                return perCom;            }        });        System.out.println(arrayList);    }

User实体类

@Data@AllArgsConstructorpublic class User extends BaseVo{    private String score;    private String name;}

a5687414b529109f73eb8f1b9b1665fc.png

点击下方
阅读原文
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值