我很好奇是否可以在以下情况下使用 orElseThrow() ,或者是否有更多 Java 8 方法来执行相当于 1-liner 的操作?
Collection<Foo> foo = blah.stream().filter(somePredicate).collect(Collectors.toList());
if (foo.isEmpty()) {
throw new Exception("blah");
}
Run Code Online (Sandbox Code Playgroud)
jan*_*nis 11
你可以试试这个:
Collection<Foo> foo = blah.stream().filter(somePredicate)
.collect(Collectors.collectingAndThen(Collectors.toList(), Optional::of))
.filter(l -> !l.isEmpty())
.orElseThrow(() -> new Exception("blah"))
Run Code Online (Sandbox Code Playgroud)
请注意,与您的代码相比,这会分配一个额外的Optional实例。
| 归档时间: |
|
| 查看次数: |
5774 次 |
| 最近记录: |