Как найти значения строкового массива в потоке - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь найти решение следующей проблемы.

Как найти значения из "условий" в "потоке"?На данный момент я могу фильтровать только методом "line.contains".Но я хочу, чтобы пользователь мог дать ряд условий, которые будут сохранены в «условиях» массива.Я пытался создать цикл for в stream.filter, но мне не удалось. ^^ Возможно, вы знаете эффективный способ.:)

Спасибо.

private static void streamSelectedFile(String p, String[] conditions) {
    try (
        Stream<String> stream = Files.lines(Paths.get(p), StandardCharsets.ISO_8859_1)) {       
        Stream<String> filteredStream = 
                stream.filter(line -> line.contains("conditionValue"));     
        filteredStream.forEach(elem -> {
            System.out.println(elem + " Path: " + p);
        });
    } catch (IOException e) {
        ...
    }
}   

1 Ответ

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

Использование allMatch

stream.filter(line -> Stream.of(conditions).allMatch(line::contains))
...