在Java中将嵌套的可选列表转换为可选列表?
我有一个optionalIdList可选optionalIdList,我想迭代它,然后转换回可选。到目前为止,我的代码如下:在Java中将嵌套的可选列表转换为可选列表?,java,lambda,functional-programming,Java,Lambda,Functional Programming,我有一个optionalIdList可选optionalIdList,我想迭代它,然后转换回可选。到目前为止,我的代码如下: optionalIdList .map( idList -> idList.stream() .map( id ->
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?由于不清楚,投票否决了这个问题。。