Tôi muốn tìm xem liệu một chuỗi các chuỗi có ít nhất một lần xuất hiện của một số khác String
trong một Set<String>
hay không. Tôi đã đưa ra hai giải pháp.Dòng Java: filter(). Count() vs anyMatch()
Hiệu suất khôn ngoan, cách tiếp cận nào là tốt nhất/được đề xuất?
1)
return source.stream().filter(this::streamFilter).count() > 0;
2)
return source.stream().anyMatch(this::streamFilter);
Dưới đây là phương pháp streamFilter:
private boolean streamFilter(String str) {
return filterKeywords.contains(str.toLowerCase());
}
filterKeywords: private Set<String> filterKeywords;
Hoặc là có ap tốt hơn proach hơn thế này?
# 2 vì nó dừng tìm kiếm khi kết quả là dứt khoát. Như javadoc nói: * Đây là một [** ngắn mạch ** hoạt động thiết bị đầu cuối] (https://docs.oracle.com/javase/8/docs/api/java/util/stream/package-summary.html #StreamOps). * – Andreas
@Andreas Tôi cũng nghĩ như vậy, muốn chắc chắn :) – dazito
Xem [Là Java 8 findFirst(). IsPresent() hiệu quả hơn đếm()> 0?] (Https://stackoverflow.com/q/39713964/2711488) – Holger