forEach里的return只相当于continue,没有break语法,在这里我总结了3种解决方案供你选择
- exception ,
- filter
- anyMatch
//forEach里的return只相当于continue,没有break语法
//使用exception , filter , 或者 anyMatch 可以解决
List<String> strs = Arrays.asList("a", "b", "c", "d", "e");
strs.forEach(o->{
if(o.equals("d")){
System.out.println("this char is;"+o);
return;
}
System.out.println("o="+o);
});
try{
strs.forEach(o->{
if(o.equals("d")){
System.out.println("this char is;"+o);
throw new RuntimeException();
}
System.out.println("o Exception="+o);
});
}catch (Exception e){
//
}
strs.stream().filter(o-> (!o.equals("d") && !o.equals("e"))).forEach(o->{
System.out.println("o filter="+o);
});
strs.stream().anyMatch(o-> {
boolean flag=o.equals("d");
if(flag){
return true;
}
System.out.println("o anyMatch="+o);
return false ;
});
o=a
o=b
o=c
this char is;d
o=e
o Exception=a
o Exception=b
o Exception=c
this char is;d
o filter=a
o filter=b
o filter=c
o anyMatch=a
o anyMatch=b
o anyMatch=c