如何将单元素列表转换为java 8可选

2022-09-02 09:33:27

如何将包含一个或零个元素的列表很好地转换为可选?

丑陋的代码:

List<Integer> integers = new ArrayList<>();

Optional<Integer> optional = integers.size() == 0 ?
        Optional.empty() :
        Optional.of(integers.get(0));

答案 1

您可以使用 Stream#findFirst() 方法,该方法:

返回描述此流的第一个元素的 Optional,如果流为空,则返回空的 Optional。

List<Integer> list = ...
Optional<Integer> optional = list.stream().findFirst();

或者,在获得相同的成功后,您还可以使用 Stream#findAny() 方法。


答案 2