我想收集一个 Optional
变成一个 List
,这样我就得到了一个只有一个元素的列表(如果可选的存在),或者一个空列表(如果没有)。
我想到的唯一方法(在java 11中)是通过一个流:
var maybe = Optional.of("Maybe");
var list = maybe.stream().collect(Collectors.toList());
我知道,这应该是相当有效的反正,但我想知道,如果有一个更简单的方法,转换成一个可选的列表不使用中间流?
我想收集一个 Optional
变成一个 List
,这样我就得到了一个只有一个元素的列表(如果可选的存在),或者一个空列表(如果没有)。
我想到的唯一方法(在java 11中)是通过一个流:
var maybe = Optional.of("Maybe");
var list = maybe.stream().collect(Collectors.toList());
我知道,这应该是相当有效的反正,但我想知道,如果有一个更简单的方法,转换成一个可选的列表不使用中间流?
2条答案
按热度按时间blpfk2vs1#
好吧,我把它作为答案贴出来。
List.of(maybe.get())
. 当然,这是假设在可选值中实际上存在一个值。否则:var list = maybe.isPresent() ? List.of(maybe.get()) : List.of()
.比较容易吗?也许不是。它没有中间流吗?对。
cbjzeqam2#
我认为最惯用的方法是
Optional.map
:或者,如果您不想创建一个可能最终不被使用的空列表: