Bic*_*ick 2 exception java-8 java-stream
我有以下数组
ArrayList<Car> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
我想迭代它并抛出异常,如果它包含一定的值
即
如果至少有一个
list.stream.filter(x -> x.color.equals("Black"));
Run Code Online (Sandbox Code Playgroud)
然后我想停止迭代并抛出异常.
有办法吗?
你可以使用anyMatch这个:
boolean matched = list.stream().anyMatch(x -> x.color.equals("Black"));
if(matched) throw new SomeException();
Run Code Online (Sandbox Code Playgroud)
因为如果一个元素在迭代它时满足条件,它不会评估管道的其余部分,并且如果流是空的则它返回false,我认为这正是你要找的.
当然,您可以在一个语句中执行此操作,但根据具体情况,它可能无法提高可读性:
if(list.stream().anyMatch(x -> x.color.equals("Black"))) {
throw new SomeException();
}
Run Code Online (Sandbox Code Playgroud)
最简单的是:
list.forEach( x -> {
if(x.color.equals("Black")) throw new RuntimeException();
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2764 次 |
| 最近记录: |