在 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中文网其他相关文章!