java列表按一个字段排序,然后按某个特定值排序

csga3l58  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(561)

这个问题在这里已经有答案了

java中如何按两个字段排序((16个答案)
上个月关门了。
我有一个清单:

List<A> aList

where A:
public class A{
private Long id;

private LocalDate created;

private AStatus status; //enum

...other fields
}
public enum AStatus{
    NEW, SEND, WAITING, CANCELLED
}

如何首先按 created 然后我想让元素的状态 NEW 作为第一个元素(然后是其他元素) AStatus ),例如:

1 10.12.2020 NEW
2 10.12.2020 SEND
3 10.12.2020 CANCELLED
4 08.12.2020 NEW
5 08.12.2020 NEW
pgccezyw

pgccezyw1#

你可以创建一个自定义 Comparator 那就顺理成章了 created 然后通过一个布尔值 status == AStatus.NEW (记住- false 在前面 true 排序布尔值时):

List<A> aList = // something...

// I assume these getters exist
aList.sort(Comparator.comparing(A::getCreated).reversed() 
                     .thenComparing(a -> a.getStatus() != AStatus.NEW)
);

相关问题