El Files.lines().forEach()
método no permite la break
. ¿Cuál es la mejor manera de leer las líneas en Java 8 en trozos y el descanso cuando sea necesario?
Update 1: Ejemplo de excepción.
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);
} }
Esto es fácil mediante el uso de java-9 takeWhile
, así que cuando la condición (s <1) no se bajará la parte restante de la corriente aquí
cuando un elemento se encontró que no coincide con el predicado, el resto de la corriente se descarta.
s.takeWhile(s -> s < 1).forEach(System.out::println);
Mediante el uso de java-8 intentó un ejemplo, pero esto no toda eficiente takeWhile
, mediante la combinación peek
y findFirst()
pero la necesidad de tener condición de doble control que no tiene sentido en lugar de esto voy a preferir estándar, mientras que bucle
IntStream.range(0, 5).peek(i->{
if(i<3) {
System.out.println(i);
}
}).filter(j->j>=3).findFirst();
realizar la acción en la mirada y la corriente se romperá cuando cada vez validado en el predicado findFirst