java lambda allmatch 如果不匹配则打印值

java lambda allmatch print value if not match

有一个字符串列表,如果一个字符串不是以前缀开头,我想打印它。 如果所有字符串都以前缀开头,结果将为布尔值。

有没有办法做到一行?

将它组合起来的正确语法是什么:

 return words.stream()
        .allMatch(work -> word.startWith("ab"));

 words.stream()
        .forEach(word -> {
          if (!word.startWith("ab")) {
            System.out.print(word);
          }
        });

谢谢,

使用Stream.peek在流中间放置一个操作

static boolean testPrefix(List<String> words, String prefix) {
    return words.stream()
            .peek(word -> {
                if (!word.startsWith("ab")) System.out.println(word);
            })
            .allMatch(word -> word.startsWith(prefix));
}