我想查找一個字符串流是否至少有一個出現在Set<String>
中的另一個String
。我想出了兩個解決方案。Java Streams:filter()。count()vs anyMatch()
表現明智,哪種方法最好/推薦?
1)
return source.stream().filter(this::streamFilter).count() > 0;
2)
return source.stream().anyMatch(this::streamFilter);
這裏的streamFilter方法:
private boolean streamFilter(String str) {
return filterKeywords.contains(str.toLowerCase());
}
filterKeywords:private Set<String> filterKeywords;
或者有更好的AP比這個更進步?
#2,因爲當結果是確定的時它停止搜索。正如javadoc所說:*這是一個[** short-circuit **終端操作](https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html #StreamOps)。* – Andreas
@Andreas我也這麼認爲,想要確定:) – dazito
請參見[Java 8 findFirst()。isPresent()比count()> 0更有效嗎?](https://stackoverflow.com/q /2711488分之39713964) – Holger