集合RiskAlertInformationPO,有两个属性,Integer priority,Date createTime, 用java写个方法,先根据priority找到最小,再根据createTime找到最新的一条数据
时间: 2024-11-03 13:20:02 浏览: 5
在Java中,你可以创建一个`Comparator`来帮助你在集合中按照优先级(priority)和创建时间(createTime)排序。这里是一个简单的例子:
```java
import java.util.Comparator;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class RiskAlertInformationPO {
private Integer priority;
private Date createTime;
// getters and setters...
public static RiskAlertInformationPO findMinMaxByPriorityAndCreateTime(List<RiskAlertInformationPO> list) {
if (list.isEmpty()) {
throw new IllegalArgumentException("集合为空");
}
Comparator<RiskAlertInformationPO> comparator = new Comparator<RiskAlertInformationPO>() {
@Override
public int compare(RiskAlertInformationPO o1, RiskAlertInformationPO o2) {
// 先按priority升序排列
int priorityCompare = o1.getPriority().compareTo(o2.getPriority());
if (priorityCompare == 0) {
// 如果priority相等,则按createTime降序排列
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 请确保这个日期格式与你的实际数据匹配
try {
Date date1 = dateFormat.parse(o1.getCreateTime().toString());
Date date2 = dateFormat.parse(o2.getCreateTime().toString());
return -date1.compareTo(date2);
} catch (ParseException e) {
throw new RuntimeException("无法解析日期", e);
}
}
return priorityCompare;
}
};
Collections.sort(list, comparator);
// 返回最小优先级且最新创建时间的数据
return list.get(0);
}
}
```
在这个例子中,`findMinMaxByPriorityAndCreateTime`方法接受一个`RiskAlertInformationPO`列表,使用自定义的比较器根据指定规则找出符合条件的元素。如果列表为空,它会抛出异常。
阅读全文