Java 按流中的条件引发异常

Java 按流中的条件引发异常,java,java-stream,Java,Java Stream,如何过滤流表达式以引发异常 我有一个函数来检查列表元素的总和,若总和大于1->抛出异常 Double sum=list.stream().map(element::getNumber).reduce(0.0,Double::sum); 如果(总和>1){ 抛出新异常(“消息”); } 是否可以将if条件添加到流表达式中,以消除额外的if条件?您可以使用单个参数stream.reduce()和Optional.orelsetrow() list.stream() .map(元素::getNumb

如何过滤流表达式以引发异常

我有一个函数来检查列表元素的总和,若总和大于1->抛出异常

Double sum=list.stream().map(element::getNumber).reduce(0.0,Double::sum);
如果(总和>1){
抛出新异常(“消息”);
}

是否可以将
if
条件添加到流表达式中,以消除额外的
if
条件?

您可以使用单个参数
stream.reduce()
Optional.orelsetrow()

list.stream()
.map(元素::getNumber)
.减少(双倍::总和)
.filter(总和->总和新异常(“消息”);

您可以在
reduce
操作中执行此操作,缺点是您无法在本机使用选中的异常,但您可以找到


不错。我想知道是否有使用
mapToDouble
的解决方案……但没有。
Double sum = list.stream()
                 .map(element::getNumber)
                 .reduce(0.0, (first, second) -> {
                     double s = first + second;
                     if (s > 1) throw new RuntimeException("");
                     return s;
                 });