将列表 转换为列表 Java

问题描述 投票:1回答:1

我正在尝试将List<enum>转换为List<String>并将其设置在某处。另外,枚举列表有时可以为NULL。我尝试使用Optional类。

如果我尝试使用Streams,它会起作用。但是,我必须在转换前后进行空检查。

示例代码:

枚举:

enum A {
   VALUE1,VALUE2;
}

业务逻辑:

List<A> list = new ArrayList<>();
list.add(A.VALUE1);
list.add(A.VALUE2);

BaseClass obj = new BaseClass();
ChildClass obj1 = new ChildClass();
obj1.setList(list);
obj.setChildClass(obj1);

转换逻辑:

List<String> newList = Optional.ofNullable(obj.getChildClass())
   .map(ChildClass::list). //TO-DO.. Logic to convert enum to string
   .orElse(null);
if(newList!=null){
new Object().setNewList(newList);
}
java java-8 enums optional
1个回答
0
投票

怎么样:

        List<A> list = new ArrayList<>();
        list.add(A.VALUE1);
        list.add(A.VALUE2);
        list.add(null);
List<String> collect = list.stream().map(Optional::ofNullable) //Stream<Optional<..>>
    .map(opt -> opt.orElse(null)) //Stream<A>
    .map(Objects::toString)  //Stream<String>
    .collect(Collectors.toList());
© www.soinside.com 2019 - 2024. All rights reserved.