Files.lines().forEach()
方法不允许break
。读取Java 8中的代码行并在需要时中断的最佳方法是什么?
更新1:例外示例。
public class Main {
public static void main(String[] args) {
try(IntStream s = IntStream.range(0, 5);){
s.forEach(i -> validate(i));
}catch(Exception ex){
System.out.println("Hello World!");
}
}
static void validate(int s){
if(s > 1){
//throw new Exception(); ?
}
System.out.println(s);
} }
答案 0 :(得分:1)
使用java-9 takeWhile
很容易,因此,当条件(s <1)失败时,它将丢弃流here的其余部分
当遇到与谓词不匹配的元素时,流的其余部分将被丢弃。
s.takeWhile(s -> s < 1).forEach(System.out::println);
通过使用Java-8尝试了一个示例,但是通过组合takeWhile
和peek
并不能像findFirst()
那样高效,但是需要具有双重检查条件,这比这没有任何意义我更喜欢标准while循环
IntStream.range(0, 5).peek(i->{
if(i<3) {
System.out.println(i);
}
}).filter(j->j>=3).findFirst();
在findFirst
中验证谓词后,立即执行窥视操作,流就会中断