Java 将可选列表转换为列表
我想将一个Java 将可选列表转换为列表,java,java-stream,java-11,Java,Java Stream,Java 11,我想将一个可选的收集到一个列表中,这样我就得到了一个包含单个元素的列表(如果可选的存在),或者一个空列表(如果没有) 我(在Java 11中)想到的唯一方法是通过流: var maybe = Optional.of("Maybe"); var list = maybe.stream().collect(Collectors.toList()); 我知道,无论如何这应该是相当有效的,但我想知道,是否有一种更简单的方法可以不使用中间流将可选项转换为列表?好的,我将它作为一个答案
可选的
收集到一个列表中
,这样我就得到了一个包含单个元素的列表(如果可选的存在),或者一个空列表(如果没有)
我(在Java 11中)想到的唯一方法是通过流:
var maybe = Optional.of("Maybe");
var list = maybe.stream().collect(Collectors.toList());
我知道,无论如何这应该是相当有效的,但我想知道,是否有一种更简单的方法可以不使用中间流将可选项转换为列表?好的,我将它作为一个答案发布
List.of(maybe.get())
。当然,这是假设在可选项中实际上存在一个值。否则:var list=maybe.isPresent()?List.of(maybe.get()):List.of()
容易吗?也许不是。它没有中间流吗?是的。好的,我就把它作为答案贴出来
List.of(maybe.get())
。当然,这是假设在可选项中实际上存在一个值。否则:var list=maybe.isPresent()?List.of(maybe.get()):List.of()
容易吗?也许不是。它没有中间流吗?是的。我认为最惯用的方法是使用
可选。map
:
var maybe = Optional.of("Maybe");
var list = maybe.map(List::of).orElse(Collections.emptyList());
或者,如果您不想创建一个可能最终未被使用的空列表:
var list = maybe.map(List::of).orElseGet(Collections::emptyList);
我认为最惯用的方法是使用
Optional.map
:
var maybe = Optional.of("Maybe");
var list = maybe.map(List::of).orElse(Collections.emptyList());
或者,如果您不想创建一个可能最终未被使用的空列表:
var list = maybe.map(List::of).orElseGet(Collections::emptyList);
不,没有比这更简单的方法了
List.of(可能是.get())
。当然,这是假设在可选项中实际上存在一个值。否则:var list=maybe.isPresent()?List.of(maybe.get()):List.of()
。更容易的?也许不是。没有中间流?Yes.willList strings=Optional.ofNullable(“Maybe”).map(ImmutableList::of).orelsGet(Collections::emptyList)代码>足够好吗?我建议列出maybeList=maybe.map(Collections::singletonList).orElse(Collections.emptyList())代码>作为最惯用的方式…我同意@mcepender解决方案,它比使用流要好!不,没有比这更简单的方法了List.of(可能是.get())
。当然,这是假设在可选项中实际上存在一个值。否则:var list=maybe.isPresent()?List.of(maybe.get()):List.of()
。更容易的?也许不是。没有中间流?Yes.willList strings=Optional.ofNullable(“Maybe”).map(ImmutableList::of).orelsGet(Collections::emptyList)代码>足够好吗?我建议列出maybeList=maybe.map(Collections::singletonList).orElse(Collections.emptyList())代码>作为最惯用的方式…我同意@mcepender解决方案,它比使用流要好!