如何将地图中的可选值作为可选列表?

时间:2018-03-16 04:11:19

标签: list dictionary java-8 optional collectors

Map<Long, Optional<Long>> aMap = new HashMap<>();

此地图包含一些键和可选值。

Optional<List<Long>> valuesList = input.aMap().values().stream()
                            .collect(Collectors.toList());

以上方式有编译错误。如何正确获取可选列表?

2 个答案:

答案 0 :(得分:3)

你错过了返回值,不要忘记Optional<List<Long>>是一个可选对象,如果存在,可以有1个列表....

您需要List<Optional<Long>>

List<Optional<Long>> valuesList = input.aMap()
                   .values()
                   .stream()
                   .collect(Collectors.toList());

答案 1 :(得分:2)

您甚至不需要stream,只需将它们收集到List

 List<Optional<Long>> list = new ArrayList<>(input.aMap().values());