Java Lambda - 检查ArrayList to Stream是否为空

qum*_*uma 8 lambda optional java-8 java-stream

我有以下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();
Run Code Online (Sandbox Code Playgroud)

Mag*_*nus 20

Stream.findFirst返回一个Optional,由你决定是否有一个值而不是只是调用get.

如果可orElse选项为空,则可以使用该方法返回默认值.