Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在过滤操作后从流中抛出异常_Java_Exception_Java Stream - Fatal编程技术网

Java 如何在过滤操作后从流中抛出异常

Java 如何在过滤操作后从流中抛出异常,java,exception,java-stream,Java,Exception,Java Stream,大家好 我有以下代码: statusliquilationsfrompegadictionary。 流() .filter(statusliquisition->statusCode.equals(statusliquisition.getId())) .anyMatch(statusliquisition->statusliquisition.getDecl().equals(“N”)); 现在我在过滤后得到一个空列表。我想在这种情况下抛出一个异常。我可以在同一个流中执行此操作吗?如果没有与

大家好

我有以下代码:

statusliquilationsfrompegadictionary。
流()
.filter(statusliquisition->statusCode.equals(statusliquisition.getId()))
.anyMatch(statusliquisition->statusliquisition.getDecl().equals(“N”));

现在我在过滤后得到一个空列表。我想在这种情况下抛出一个异常。我可以在同一个流中执行此操作吗?

如果没有与第一个筛选器匹配的元素(如您在注释中所述),您确实希望引发异常,则必须分两步执行:

final List<StatusLiquidation> withCorrectStatus = statusLiquidationsFromPegaDictionary
        .stream()
        .filter(statusLiquidation -> statusCode.equals(statusLiquidation.getId()))
        .collect(toList());

if (withCorrectStatus.isEmpty()) {
    throw new Exception("Nothing found");
}

return withCorrectStatus.stream()
        .anyMatch(statusLiquidation -> statusLiquidation.getDecl().equals("N"));
correctStatus=statusLiquidationsFromPegaDictionary的最终列表
.stream()
.filter(statusliquisition->statusCode.equals(statusliquisition.getId()))
.collect(toList());
如果(withCorrectStatus.isEmpty()){
抛出新异常(“未找到任何内容”);
}
返回withCorrectStatus.stream()
.anyMatch(statusliquisition->statusliquisition.getDecl().equals(“N”));

在第一次筛选之后,我需要检查计数元素,如果0抛出一些异常,则必须分两步执行,我猜是的,谢谢。这是正确的。我认为这是可能的,这能回答你的问题吗?您不会得到“过滤后的空列表”。这不是流的工作方式。您只是没有得到匹配两个谓词的元素。是的,在流中筛选后可能有0个元素,并且anyMatch不需要调用,我不会抛出exceptionNo,您仍然在考虑错误。没有“过滤后”。每个元素都根据过滤器谓词进行检查,如果匹配,则根据anyMatch谓词进行检查。如果它也匹配,则操作结束时不会根据筛选器谓词检查所有元素。就像您从pegadictionary.stream()指定了
statusLiquidationsFromPegaDictionary.stream().anyMatch(statusLiquidation->statusCode.equals(statusLiquidation.getId())和&statusLiquidation.getDecl().equals(“N”)没有区别。