I have the following array
ArrayList<Car> list = new ArrayList<>();
我希望能够迭代它并在其中包含特定值时抛出异常。
例如,如果至少有一个:
list.stream.filter(x -> x.color.equals("Black"));
我想停止迭代并抛出异常,有办法吗?
I have the following array
ArrayList<Car> list = new ArrayList<>();
list.stream.filter(x -> x.color.equals("Black"));
我想停止迭代并抛出异常,有办法吗?
anyMatch
方法来实现这个功能:boolean matched = list.stream().anyMatch(x -> x.color.equals("Black"));
if(matched) throw new SomeException();
由于在迭代过程中仅当条件满足时才会继续处理管道的其余部分,并且当流为空时返回false,因此我认为这就是您要寻找的内容。
当然,您可以用单个语句来完成它,但这可能取决于情况而不会提高可读性:
if(list.stream().anyMatch(x -> x.color.equals("Black"))) {
throw new SomeException();
}
list.forEach( x -> {
if(x.color.equals("Black")) throw new RuntimeException();
});
forEach
方法不同,这种方法允许你抛出已检查的异常。 - Misha