2 回答
TA贡献1847条经验 获得超7个赞
您可以使用collectingAndThen:
myList.stream()
.filter(item -> someMethod(item))
.map(item -> doSomething(item))
.collect(Collectors.collectingAndThen(Collectors.toList(), result -> {
if (result.isEmpty()) throw new RuntimeException("Empty!!");
return result;
}));
TA贡献2036条经验 获得超8个赞
由于没有直接的方法如何检查 Java 8 Stream 是否为空?,更好的代码是:
List<SomeObject> output = myList.stream()
.filter(item -> someMethod(item))
.map(item -> doSomething(item))
.collect(Collectors.toList());
if (!myList.isEmpty() && output.isEmpty()) {
throw new RuntimeException("your message");
}
另一种替代方法是使用noneMatch, 在执行前进行验证,例如:
if (myList.stream().noneMatch(item -> someMethod(item))) {
throw new RuntimeException("your message");
}
添加回答
举报