最近在工作过程中经常碰到需要排序的场景,但是由于数据格式不是List集合,也无法转为List,因此写了一个适用于非List数据结构下的排序方法,代码如下:
//排序
class ModelObjectComparator implements Comparator<ModelObject> {
private String propertyName; // 要比较的属性名称
public ModelObjectComparator(String propertyName) {
this.propertyName = propertyName;
}
@Override
public int compare(ModelObject o1, ModelObject o2) {
// 定义日期格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
// 获取 o1 和 o2 的 g3Date 属性值
String dateStr1 = null;
String dateStr2 = null;
try {
dateStr1 = o1.getPropertyDisplayableValue(propertyName);
dateStr2 = o2.getPropertyDisplayableValue(propertyName);
} catch (NotLoadedException e) {
throw new RuntimeException(e);
}
// 进行适当的比较逻辑
try {
LocalDateTime dateTime1 = LocalDateTime.parse(dateStr1, formatter);
LocalDateTime dateTime2 = LocalDateTime.parse(dateStr2, formatter);
return dateTime1.compareTo(dateTime2);
} catch (DateTimeParseException e) {
// 处理无法转换为日期格式的情况,根据需要处理
return 0; // 或者抛出异常
}
}
}
//调用方法参数1:待排序数据列表,参数2:参数列表中的参数
Arrays.sort(changeForms, new ModelObjectComparator("g3_Date"));
//调用方法参数1:待排序数据列表,参数2:参数列表中的参数
Arrays.sort(changeForms, new ModelObjectComparator("g3_Date"));
调用方法如上,示例代码排序索引为日期时间,大家也可根据自己的需求进行修改。