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