Java8新特性 | List多字段排序(含示例代码)

这篇具有很好参考价值的文章主要介绍了Java8新特性 | List多字段排序(含示例代码)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

可以利用 List 的 sort 方法进行排序,Comparator.comparing 可以指定排序字段,thenComparing 可以继续指定其他的排序字段。
默认使用正序排列,如果想倒序可以使用 Comparator.reverseOrder() 指定。

下面是示例代码
创建一个内部类 SortTest

@Getter
@Setter
@AllArgsConstructor
static class SortTest {
    private String name;
    private int a;
    private int b;
    private int c;
}

添加main方法,声明一个List,并往其中添加数据,再按规则进行排序(先按a倒序排列、再按b倒序排列、最后按c正序排列),最后输出。

public static void main(String[] args) {
    // 测试List多属性排序
    List<SortTest> list = new ArrayList<>();
    list.add(new SortTest("S1", 7, 3, 7));
    list.add(new SortTest("S2", 9, 5, 5));
    list.add(new SortTest("S3", 5, 7, 4));
    list.add(new SortTest("S4", 1, 5, 4));
    list.add(new SortTest("S5", 4, 5, 4));
    list.add(new SortTest("S6", 5, 6, 1));
    list.add(new SortTest("S7", 5, 7, 1));
    list.add(new SortTest("S8", 5, 3, 7));
    list.add(new SortTest("S9", 5, 7, 7));

    // 先按a倒序排列、再按b倒序排列、最后按c正序排列
    list.sort(Comparator.comparing(SortTest::getA, Comparator.reverseOrder())
            .thenComparing(SortTest::getB, Comparator.reverseOrder())
            .thenComparing(SortTest::getC));

    for (SortTest sortTest : list) {
        System.out.println(sortTest.getName() + "\t" + sortTest.getA() + "\t" + sortTest.getB() + "\t" + sortTest.getC());
    }
}

输出结果:从输出结果也可以看出,List 确定是按照我们定义的规则进行排序的。

S2	9	5	5
S1	7	3	7
S7	5	7	1
S3	5	7	4
S9	5	7	7
S6	5	6	1
S8	5	3	7
S5	4	5	4
S4	1	5	4

至此 Java8 的 List 多字段排序介绍完成。文章来源地址https://www.toymoban.com/news/detail-521297.html

到了这里,关于Java8新特性 | List多字段排序(含示例代码)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式、Java8新特性实战 - List<T> 抽象统计组件

    在日常写代码的过程中,针对List集合,统计里面的某个属性,是经常的事情,针对List的某个属性的统计,我们目前大部分时候的代码都是这样写,每统计一个变量,就要定义一个值,且要在for循环增加一行累计的代码,比较繁琐,而且代码写出来不够优雅。 利用顶层抽象的

    2024年02月14日
    浏览(26)
  • Java8使用stream流给List<Map<String,Object>>分组(多字段key)

    Java8使用 stream流 给ListMapString,Object根据字段key 分组 一、项目场景: 从已得到的List集合中,根据某一元素(这里指map的key)进行分组,筛选出需要的数据。 如果是SQL的话则使用 group by 直接实现,代码的方式则如下: 使用到stream流的 Collectors.groupingBy() 方法。 二、代码实现 1、首

    2024年02月02日
    浏览(40)
  • Java8 Stream流List<JSONObject>通过某一属性进行排序

    List对象 1.首先你需要list.parallelStream().sorted 进行流处理,使用parallelStream可以充分调度多核CPU。 2.使用Comparator.comparing进行排序,reversed()进行倒序排列,thenComparing进行下一个排序。 3.Comparator.comparing()里面的内容,也是就是Object::getter,例如Test::getName 4.最后格式化为需要的格式

    2024年02月12日
    浏览(42)
  • JAVA的sort用法详解(二维数组排序,List<>排序,lambada表达式,自定义类型排序)

    目录 前言: 一维数组降序: 方法1.Comparator接口: 代码实现: 方法2.Collections.reverseOrder(): 代码实现:  二维数组排序: 代码如下: List排序: 代码如下: 自定义类型比较排序: 按照年龄逆序排序: 按照姓名升序排序: lambada表达式简写: 一维数组逆序代码: 二维数组排

    2024年04月09日
    浏览(42)
  • Java中List对象集合按照对象中某字段进行排序

    在Java中,可以使用List集合对象的sort(Comparator? super E c)方法,按照对象中某字段对List集合进行排序 栗子: 打印输出结果如下:

    2024年02月12日
    浏览(44)
  • java通用实现List<自定义对象>中指定字段和指定排序方式

    Person类: 工具类: 结果:

    2024年02月04日
    浏览(33)
  • C# list的sort排序

    目录 前言: 值类型的排序: 方法一:直接调用sort函数 方法二:通过C# ling表达式与CompareTo接口配合使用 方法三:降序的实现 对于自定义类型的sort排序  方法一:通过实现IComparable接口重写CompareTo方法来排序 方法二:通过ling表达式实现          有时需要对List列表中内

    2024年02月15日
    浏览(25)
  • Java8 List<Object> 转成 List<JSONObject>

       Java8 List<Object> 转成 List<Map<String, Object>>

    2024年02月16日
    浏览(30)
  • Java低代码开发:jvs-list(列表引擎)功能(二)字段及样式配置

    进入列表页设计器-页表设计界面,点击新增一行、或者删除按钮,可以对字段进行增减操作,如果对于权限的列表页,可以使用批量创建字段的按钮: 字段的批量设置,点击批量添加如下图所示 字段为中文名称,每一行为一个字段,默认去除空格 系统提供创建人、创建时间

    2024年02月09日
    浏览(33)
  • Java8 list多属性去重

    大家好,我是三叔,很高兴这期又和大家见面了,一个奋斗在互联网的打工人。 在 Java 开发中,我们经常会面临对 List 中的对象属性去重的需求。然而,当需要根据多个属性来进行去重时,情况会稍微复杂一些。本篇博客将深入探讨如何使用 Java 8 的 Stream API 来实现 List 多属

    2024年02月14日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包