java8对于list有多条数据,现在根据数据对象其中的一个属性去对应的枚举类里面找出优先级最高的那条数据
时间: 2024-03-05 07:49:50 浏览: 54
java8从list集合中取出某一属性的值的集合案例
5星 · 资源好评率100%
可以使用Java8的Stream API来实现这个功能。具体步骤如下:
1. 将List转换为Stream对象。
2. 使用Stream的max方法,根据数据对象的属性值进行比较,找到最大值。
3. 根据最大值获取对应的枚举类实例。
下面是一个示例代码:
```java
public class Test {
public static void main(String[] args) {
// 假设有一个List对象
List<Data> dataList = new ArrayList<>();
dataList.add(new Data(1, Priority.LOW));
dataList.add(new Data(2, Priority.HIGH));
dataList.add(new Data(3, Priority.MEDIUM));
// 根据Priority的优先级排序
Comparator<Data> comparator = Comparator.comparing(Data::getPriority);
// 找到优先级最高的那条数据
Data maxData = dataList.stream().max(comparator).get();
// 根据最大值获取对应的枚举类实例
Priority maxPriority = maxData.getPriority();
System.out.println("优先级最高的数据为:" + maxData);
System.out.println("最高优先级为:" + maxPriority);
}
}
// 数据类
class Data {
private int id;
private Priority priority;
public Data(int id, Priority priority) {
this.id = id;
this.priority = priority;
}
public int getId() {
return id;
}
public Priority getPriority() {
return priority;
}
@Override
public String toString() {
return "Data{" +
"id=" + id +
", priority=" + priority +
'}';
}
}
// 枚举类
enum Priority {
LOW, MEDIUM, HIGH
}
```
输出结果为:
```
优先级最高的数据为:Data{id=2, priority=HIGH}
最高优先级为:HIGH
```
阅读全文