一行检查String是否包含bannedSubstrings

pri*_*ain 2 java string lambda java-8 java-stream

我有一个String title和一个List<String> bannedSubstrings.现在我想执行一行检查是否title没有bannedSubstrings.

我的方法:

if(bannedSubstrings.stream().filter(bannedSubstring -> title.contains(bannedSubstring)).isEmpty()){
    ...
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有isEmpty()流的方法.那你怎么解决这个问题呢?有一线解决方案吗?

gus*_*afc 8

听起来你想要阅读anyMatch:

if (bannedSubstrings.stream().anyMatch(title::contains)) {
    // bad words!
}
Run Code Online (Sandbox Code Playgroud)

相反,还有noneMatch:

if (bannedSubstrings.stream().noneMatch(title::contains)) {
    // no bad words :D
}
Run Code Online (Sandbox Code Playgroud)

如果title是一个长字符串,这不是很有效(但我认为标题通常不应该很长).