我有以下数组
ArrayList<Car> list = new ArrayList<>();
如果它包含某个值
,我想迭代它并抛出异常即。
如果至少有一个
list.stream.filter(x -> x.color.equals("Black"));
然后我想停止迭代并抛出异常 有办法吗?
答案 0 :(得分:8)
您可以使用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();
}
答案 1 :(得分:7)
最简单的是:
list.forEach( x -> {
if(x.color.equals("Black")) throw new RuntimeException();
});