获取枚举某个属性的值并抽为list并去重 java8
时间: 2024-10-20 11:09:20 浏览: 15
Java中List集合对象去重及按属性去重的8种方法
5星 · 资源好评率100%
在Java 8中,如果你有一个枚举类型,并想要获取其所有枚举常量的某个属性值并转换为列表,同时去除重复项,你可以这样做:
```java
import java.util.*;
import java.lang.reflect.*;
// 假设我们有一个名为Color的枚举,它有name属性
enum Color {
RED("红色"), GREEN("绿色"), BLUE("蓝色");
private String name;
// 枚举构造函数
Color(String name) {
this.name = name;
}
// 获取name属性的值
public String getName() {
return name;
}
}
public List<String> getUniqueEnumValues(Color[] enumArray) {
// 使用Stream API操作
Stream<Color> stream = Arrays.stream(enumArray);
List<String> namesList = stream.map(Color::getName)
.distinct()
.collect(Collectors.toList());
return namesList;
}
// 示例用法
public static void main(String[] args) {
Color[] colors = Color.values();
List<String> uniqueNames = getUniqueEnumValues(colors);
System.out.println(uniqueNames); // 输出:[红色, 绿色, 蓝色]
}
```
在这个例子中,`getUniqueEnumValues`方法接受一个枚举类型的数组,通过流(Stream)处理,首先将每个枚举实例映射到它们的"name"属性值,然后使用`distinct()`去重,最后收集到一个新的列表中。
阅读全文