在Java中将嵌套的可选列表转换为可选列表?

在Java中将嵌套的可选列表转换为可选列表?,java,lambda,functional-programming,Java,Lambda,Functional Programming,我有一个optionalIdList可选optionalIdList,我想迭代它,然后转换回可选。到目前为止,我的代码如下: optionalIdList .map( idList -> idList.stream() .map( id ->

我有一个optionalIdList可选optionalIdList,我想迭代它,然后转换回可选。到目前为止,我的代码如下:

optionalIdList
              .map(
                  idList ->
                      idList.stream()
                          .map(
                              id ->
                                  filterIds(
                                      partnerIds
                                  )))
              .flatMap(streamOfLists -> streamOfLists.map(item -> item.orElseGet(ImmutableSet::of)));
filterIds列表返回可选的

但是,使用我当前的解决方案,我会遇到以下错误:

必需类型:可选

提供:可选


有没有一种很好的方法来完成我想做的事情?

编辑:出于某种原因,我假设FilterID返回一个字符串,而不是您编写的可选字符串

以下是最新的答案:

Optional<Set<String>> output =
    optionalIdList.map(idList -> idList.stream()
                                       .map(id -> filterIds(partnerIds))
                                       .filter (Optional::isPresent)
                                       .map (Optional::get)
                                       .flatMap (Set::stream)
                                       .collect(Collectors.toSet()));

您是否可以添加用示例数据填充选项列表的代码?如果我们不知道其中包含哪些数据,那么调试就很困难。还包括运行所需的导入。您在这里想做什么?你能展示一些预期的输入和输出吗?是我还是那种代码风格看起来很难看?重新思考你的设计-什么是可选的解决方案,而一个空集不能解决你的问题?还有,为什么.mapid->filterIdspartnerIds忽略了这个id?由于不清楚,投票否决了这个问题。。