当前位置: 首页 > 知识库问答 >
问题:

正在将foreach转换为筛选器[duplicate]

齐宗清
2023-03-14

我想转换

List<FlightPositionRoute> flightPositionRoutes = new ArrayList<>();

            dtos.stream()
                    .map(a-> positions.getPositions(a.getId()
                            .getValue()))
                    .forEach(flightPositionRoute -> 
                               flightPositionRoute.ifPresent(flightPositionRoutes::add));

对此:

List<FlightPositionRoute> flightPositionRoutes = dtos.stream()
                    .map(a-> positions.getPositions(a.getId()
                            .getValue()))
                    .filter(Optional::isPresent)
                    .collect(Collectors.toList());

不幸的是,我

Required type: List <FlightPositionRoute>
Provided: List <Optional<FlightPositionRoute>>

我该怎么修理呢?

共有1个答案

南宫博简
2023-03-14

您只需解压缩可选:

List<FlightPositionRoute> flightPositionRoutes = dtos.stream()
    .map(a-> positions.getPositions(a.getId().getValue()))
    .filter(Optional::isPresent)
    .map(Optional::get)
    .collect(Collectors.toList());
 类似资料:
  • 如何使用Java8的将上面的代码转换为lambda?例如list.stream().filter()....但我需要操作list。

  • 将循环转换为时遇到问题。 方法返回 我尝试过,但需要等待将转换为并且我无法添加它。 我正在尝试下载大约15个报告异步,以等待所有的已经下载,然后将它们合并成一个PDF。 注意:我使用的是框架4.8.3

  • 使用Java8 streams,我希望将列表转换为映射,如Java8 list into map 解决方案中所述。但是,我希望过滤以删除具有某些键的条目(例如,如果键为空),而不需要将值转换为键两次。

  • 我需要将Scala选项转换为Java可选。我写下了这样的话: 但是我不喜欢。 有没有简单的方法来做到这一点,或者内置的scala转换器?我正在寻找类似的东西:

  • 我尝试将一个循环转换为一个循环在flutter中等待循环。我想要循环的元素是Firebase实时数据库中的快照。 我的函数如下所示: 我尝试了不同的方法,但是我没有让函数工作。 第一次尝试: 错误: 未处理的异常:键入'_InternalLinkedHashMap 第二次尝试: 错误: 未处理的异常:键入'_InternalLinkedHashMap 在所有的尝试中,我都得到了相同的错误。但是上述