qum*_*uma 5 lambda java-8 java-stream
如果未找到任何内容,.findFirst()
则以下流管道不起作用,在这种情况下会引发 NPE。
我怎样才能防止这种情况?
scheduleDurationContainers.stream()
.filter(s -> s.getContainerType() == ScheduleIntervalContainerTypeEnum.BONUS).findFirst().get()
Run Code Online (Sandbox Code Playgroud)
您可以替换get()
为orElse(someDefault)
,如果返回的 OptionalfindFirst
为空,它将返回一些默认值。或者,orElseThrow(execptionSupplier)
如果您想在findFirst
找不到任何内容时抛出某些特定异常,则可以使用。
如果您想在使用 lambda 表达式没有返回任何内容的情况下返回默认值,那么您应该按以下顺序使用 findAny() 和 orElse()
Person result1 = persons.stream() // Convert to stream
.filter(x -> "answer".equals(x.getName())) // we want to filter "answer" only
.findAny() // If 'findAny' then return found
.orElse(null); // If not found, return null
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6140 次 |
最近记录: |