java - 如果不匹配,java lambda allmatch 打印值
问题描述
有一个字符串列表,如果一个字符串不以前缀开头,我想打印它。如果所有字符串都以前缀开头,则结果将是一个布尔值。
有没有办法在一行中做到这一点?
将其组合起来的正确语法是什么:
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));
}
推荐阅读
- unit-testing - JUnit 发布测试结果在 Azure DevOps 中不起作用
- apache - 如何将一个页面重定向到另一个页面,然后将所有剩余页面重定向到新站点
- qt - 如何在 Qt 数据库中使用 SqlCipher
- javascript - 如何在thymeleaf(java)中的模式/弹出窗口中放置服务器数据
- python - ValueError:层顺序需要 1 个输入,但它在 tensorflow 2.0 中接收到 211 个输入张量
- nim-lang - 如何在 Nim 中缓存具有不同参数的函数?
- swift - 为什么 NSCollectionView 被切断了?
- mozilla-deepspeech - DeepSpeech-Polyglot:Signals.SIGSEGV:11
- python - 当我的机器人向用户发送消息时,我如何使用 discord.py 获取下一条消息(在 DM 中)
- sql - 如何通过链接表获取数据并将行旋转到列