我想将收集Optional
到中List
,这样我就可以得到一个包含单个元素的列表(如果存在可选元素)或一个空列表(如果没有)。
我(在Java 11中)提出的唯一方法是通过Stream:
var maybe = Optional.of("Maybe");
var list = maybe.stream().collect(Collectors.toList());
我知道,无论如何这应该是相当有效的,但是我想知道,是否有一种更简便的方法可以在不使用中间Stream的情况下将Optional转换为List?
我认为最惯用的方法是使用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);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句