You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按userId升序、startDate降序排序Java Record的ArrayList?

对Java Record集合按多条件排序的解决方案

你可以直接利用Java的Comparator链式比较功能,结合Record自动生成的字段访问方法(比如userId()、startDate())来实现排序,不需要将Record改为类。

具体实现代码

假设你的集合是ArrayList<UserCourseSubscriptionRec>类型,排序代码如下:

// 方式1:使用List自带的sort方法
subscriptions.sort(
    Comparator.comparing(UserCourseSubscriptionRec::userId)
              .thenComparing(Comparator.comparing(UserCourseSubscriptionRec::startDate).reversed())
);

// 方式2:使用Collections工具类的sort方法
Collections.sort(subscriptions,
    Comparator.comparing(UserCourseSubscriptionRec::userId)
              .thenComparing(Comparator.comparing(UserCourseSubscriptionRec::startDate).reversed())
);

代码说明

  • Comparator.comparing(UserCourseSubscriptionRec::userId):先按userId进行升序排序(默认排序规则为升序)。
  • .thenComparing(...):当userId相同时,执行后续的排序规则。
  • Comparator.comparing(UserCourseSubscriptionRec::startDate).reversed():对startDate进行降序排序,通过reversed()反转默认的升序规则。

Java Record会自动为每个字段生成对应的访问方法(字段名加括号,比如userId()),因此可以直接通过方法引用来获取字段值用于比较。

内容的提问来源于stack exchange,提问作者Eric Malalel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 22:27:19