首页  >  文章  >  Java  >  如何在 Java 中按多个属性对对象列表进行排序?

如何在 Java 中按多个属性对对象列表进行排序?

Patricia Arquette
Patricia Arquette原创
2024-11-20 16:23:13306浏览

How to Sort a List of Objects by Multiple Properties in Java?

在 Java 中按多个属性对对象列表进行排序

在 Java 中,按属性对对象列表进行排序需要使用比较器。考虑以下示例:

public class ActiveAlarm {
    public long timeStarted;
    public long timeEnded;
    // ... other fields
}

要按 timeStarted 和 timeEnded 按升序对 ActiveAlarm 对象列表进行排序,可以使用嵌套比较器:

List<ActiveAlarm> alarms = ...;

Comparator<ActiveAlarm> comparator =
    Comparator.comparing(alarm -> alarm.timeStarted)
              .thenComparing(alarm -> alarm.timeEnded);

Collections.sort(alarms, comparator);

使用Java 8 Lambda 表达式

Java 8 引入了 lambda 表达式,它提供了一种简洁的方式来表示比较器:

Comparator<ActiveAlarm> comparator =
    (alarm1, alarm2) -> {
        int result = Long.compare(alarm1.timeStarted, alarm2.timeStarted);
        if (result == 0) {
            result = Long.compare(alarm1.timeEnded, alarm2.timeEnded);
        }
        return result;
    };

替代排序方法

或者,您可以使用直接访问属性的自定义比较器实现:

Comparator<ActiveAlarm> comparator = new Comparator<ActiveAlarm>() {
    @Override
    public int compare(ActiveAlarm o1, ActiveAlarm o2) {
        int result = Long.compare(o1.timeStarted, o2.timeStarted);
        if (result == 0) {
            result = Long.compare(o1.timeEnded, o2.timeEnded);
        }
        return result;
    }
};

通过使用比较器,您可以轻松地按任意属性组合和任意顺序对对象列表进行排序。

以上是如何在 Java 中按多个属性对对象列表进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn