Java 按流中的条件引发异常
如何过滤流表达式以引发异常 我有一个函数来检查列表元素的总和,若总和大于1->抛出异常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
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;
});