java 对 List 自定义排序的几种方法

本贴最后更新于 819 天前,其中的信息可能已经斗转星移

今天开发中遇到一个需求,对组装成的 List 按某个字段进行排序,刚好就总结了一下 List 排序的集中方法,记录一下

项目中有一个 SysFiled 类,其中有个排序字段 seq,使用该字段进行排序

hasFileds 是需要排序的原始集合

使用 Collections 类的 sort()方法进行匿名内部类排序

  1. 实现 Comparator 类的 compare 接口进行排序

    
    Collections.sort(hasFileds, new Comparator<SysFiled>() {
        @Override
        public int compare(SysFiled o1, SysFiled o2) {
            return o1.getSeq() - o2.getSeq();
        }
    });
    
  2. 简化为 Lambda 表达式:

    Collections.sort(hasFileds, (o1, o2) -> o2.getSeq() - o1.getSeq());
    
  3. 使用方法引用

    // 升序
    Collections.sort(hasFileds, Comparator.comparingInt(SysFiled::getSeq));
    // 降序
    Collections.sort(hasFileds, Comparator.comparingInt(SysFiled::getSeq).reversed());
    

Java8 以上可以使用 stream 进行排序

会生成一个新的 List

hasFileds = hasFileds.stream().sorted(Comparator.comparingInt(SysFiled::getSeq)).collect(Collectors.toList());

联系方式

作者:永夜

邮箱:Evernight@aliyun.com

以上内容有不正确的地方烦请指正!🙏🙏🙏

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3187 引用 • 8213 回帖
  • 知识点
    5 引用 • 41 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...