【问题标题】:Java Lambda - check if an ArrayList to Stream is emptyJava Lambda - 检查要流的 ArrayList 是否为空
【发布时间】:2015-12-30 03:49:18
【问题描述】:

我有以下 lambda 表达式,并且当 bonusScheduleDurationContainers 不为空时可以正常工作。如果它是空的,我会得到一个NoSuchElementException。如何在 lambda 表达式中检查这一点?

final List<ScheduleDurationContainer> bonusScheduleDurationContainers
        = scheduleDurationContainersOfWeek.stream()
                                          .filter(s -> s.getContainerType() == ScheduleIntervalContainerTypeEnum.BONUS)
                                          .collect(Collectors.toList());

final ScheduleDurationContainer bonusScheduleDurationContainer
        = bonusScheduleDurationContainers.stream()
                                         .filter(s -> s.getDayOfWeekStartingWithZero() == dayOfWeekTmp)
                                         .findFirst()
                                         .get();

【问题讨论】:

    标签: lambda java-8 java-stream optional


    【解决方案1】:

    Stream.findFirst 返回一个Optional,由你来检查可选参数是否有值,而不仅仅是调用 get。

    如果可选项为空,您可以使用orElse 方法返回默认值。

    【讨论】:

      【解决方案2】:

      您可能应该添加 bonusScheduleDurationContainers 的类型。这也是由于 findFirst().get 函数。请参阅文档。它声明将有一个exception。你应该使用orElse

      【讨论】:

        猜你喜欢
        • 2012-12-18
        • 1970-01-01
        • 2020-02-07
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 2021-08-05
        • 2011-12-19
        相关资源
        最近更新 更多