【发布时间】:2019-10-09 21:20:41
【问题描述】:
我有MyObject的列表
List<MyObject> myObjects;
MyObject 是一个类似于下面的模型类
public class MyObject{
private String fName;
private String lname;
private String code;
//getter setter
}
代码有四种可能的值,比如ABC,DEF,XYZ and PQR。
现在我想根据以下标准对列表进行排序。所有代码值为XYZ 的对象都应在前,然后是PQR、ABC 和DEF。
- XYZ
- PQR
- ABC
- DEF
如果可能,我想使用 java 8 来实现这一点。如何对我的 ArrayList 进行排序。
【问题讨论】:
-
使用自定义
Comparator。 How to sort List of objects by some property 将是一个很好的起点 -
我想出了那个部分,但没有实现它的工作。
-
myObjects.sort((o1, o2) -> { if(o1.getCode().equals("XYZ")) return -1; else if(o2.getCode().equals("XYZ")) return 1; // <do the same for all codes in the order you want> else return o1.getCode().compareTo(o2.getCode()); }); -
请记住,您正在比较两个对象的键以及它们之间的关系
-
为每个代码分配一个数值:XYZ -> 1, PQR -> 2, ABC -> 3, DEF -> 4. 获取 o1 的数值,以及 o2 的数值。比较数值。
标签: java java-8 comparator