Лучший способ прочитать строки из файла Java 8 и разбить их - PullRequest
0 голосов
/ 13 февраля 2019

Метод 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);
} }

1 Ответ

0 голосов
/ 13 февраля 2019

Это легко, используя java-9 takeWhile, поэтому, когда условие (s <1) не выполняется, он отбрасывает оставшуюся часть потока <a href="https://blog.indrek.io/articles/whats-new-in-java-9-streams/" rel="nofollow noreferrer"> здесь

, когдаОбнаружен элемент, который не соответствует предикату, остальная часть потока отбрасывается.

s.takeWhile(s -> s < 1).forEach(System.out::println);

При использовании java-8 пробовал пример, но это не каждый эффективен, как takeWhile,объединяя peek и findFirst(), но необходимо иметь условие двойной проверки, которое не имеет смысла, а не этого, я предпочитаю стандартное, в то время как цикл

IntStream.range(0, 5).peek(i->{
         if(i<3) {
             System.out.println(i);
         }

     }).filter(j->j>=3).findFirst();

выполняет действие в режиме просмотра и поток прерывается при проверке предикатав findFirst

...