【发布时间】:2019-12-17 12:51:16
【问题描述】:
大家好!
我有以下代码:
statusLiquidationsFromPegaDictionary.
stream()
.filter(statusLiquidation -> statusCode.equals(statusLiquidation.getId()))
.anyMatch(statusLiquidation -> statusLiquidation.getDecl().equals("N"));
现在我在过滤后得到一个空列表。我想在这种情况下抛出一个异常。我可以在同一个流中执行此操作吗?
【问题讨论】:
-
您不会得到“过滤后的空列表”。这不是流的工作方式。你只是没有得到匹配两个谓词的元素。
-
是的,在流中过滤后可能是0个元素,anyMatch不需要调用,我要抛出异常
-
不,你仍然对how streams work 有误解。没有“过滤后”。每个元素都根据过滤谓词进行检查,如果匹配,则根据 anyMatch 谓词进行检查。如果它也匹配,则操作结束而无需根据过滤谓词检查所有元素。就像你指定了
statusLiquidationsFromPegaDictionary.stream().anyMatch(statusLiquidation -> statusCode.equals(statusLiquidation.getId())&&statusLiquidation.getDecl().equals("N"));一样,没有区别。
标签: java exception java-stream