java将list得type和name属性转为枚举值
时间: 2024-10-24 08:07:16 浏览: 11
Java递归将List转为树形结构
在Java中,如果你有一个List包含Type和Name类型的对象,并想将其转换成枚举值,首先你需要确保你有对应的枚举类型定义,比如:
```java
public enum MyEnum {
TYPE1("Type1"),
TYPE2("Type2"),
NAME1("Name1"),
NAME2("Name2");
private String value;
MyEnum(String value) {
this.value = value;
}
public String getValue() {
return value;
}
}
```
然后你可以通过遍历List并映射每个对象的value到相应的枚举实例,例如:
```java
List<MyObject> objectList = ...; // 假设objectList里有Type和Name的属性
List<MyEnum> enumList = new ArrayList<>();
for (MyObject obj : objectList) {
switch (obj.getType()) { // 如果Type是枚举的一个字段
case TYPE1:
enumList.add(MyEnum.TYPE1);
break;
case TYPE2:
enumList.add(MyEnum.TYPE2);
break;
case NAME1:
enumList.add(MyEnum.NAME1);
break;
case NAME2:
enumList.add(MyEnum.NAME2);
break;
// 添加其他case分支...
}
}
```
如果`getType()`不是枚举类型而是String,你可以先进行转换再匹配枚举:
```java
Map<String, MyEnum> map = Stream.of(MyEnum.values())
.collect(Collectors.toMap(MyEnum::getValue, Function.identity()));
enumList = objectList.stream()
.map(obj -> map.getOrDefault(obj.getType(), null)) // 或者使用Objects.requireNonNull(map.get(obj.getType()))
.filter(Objects::nonNull)
.collect(Collectors.toList());
```
阅读全文