首页 > 解决方案 > 如果不匹配,java lambda allmatch 打印值

问题描述

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

有没有办法在一行中做到这一点?

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

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

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

谢谢,

标签: javalambdajava-stream

解决方案


用于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));
}

推荐阅读