LIST里面有多条数据,现在想根据优先级筛选出,只保留一条优先级最高的数据,java代码怎么实现
时间: 2024-03-04 09:48:03 浏览: 98
你可以通过自定义一个 Comparator 来实现根据优先级排序,然后只保留第一条数据。
假设你的数据类型为 `MyData`,`MyData` 类中包含一个 `priority` 字段表示优先级,那么你可以这样实现:
```java
// 自定义一个 Comparator
class PriorityComparator implements Comparator<MyData> {
@Override
public int compare(MyData o1, MyData o2) {
// 根据 priority 进行降序排序
return o2.getPriority() - o1.getPriority();
}
}
// 假设你有一个 List<MyData> 数据集合
List<MyData> dataList = ...
// 根据优先级排序
Collections.sort(dataList, new PriorityComparator());
// 只保留第一条优先级最高的数据
if (dataList.size() > 1) {
dataList = dataList.subList(0, 1);
}
```
在这个例子中,我们自定义了一个 PriorityComparator 类实现 Comparator 接口,重写 compare 方法用于根据优先级进行排序。然后使用 Collections.sort 方法对 dataList 进行排序。最后,如果 dataList 中有超过一条数据,我们只保留第一条数据(即优先级最高的数据)。
值得注意的是,如果要对对象进行排序,对象需要实现 Comparable 接口或自定义 Comparator。在 MyData 类中实现 Comparable 接口也可以达到同样的效果。
阅读全文