[英]Time complexity of this code using Java 8 stream and predicate
我有一張地圖,試圖從中使用Java 8流檢索數據,並使用謂詞進行過濾。
但是我對代碼的復雜性有很大的懷疑。 誰能幫我弄清楚這段代碼的時間復雜度。
class Student{
String id;
}
Multimap<Integer, String> map = HashMultimap.create();
map.put(1, new Student("id1"));
map.put(2, new Student("id1"));
map.put(1, new Student("id2"));
map.put(1, new Student("id3"));
// Time complexity of this ???
map.get(1).stream().filter(p -> p.getId().equals("id1"))
.collect(Collectors.toSet());
您的流代碼的簡單答案是O(1),因為您沒有指定終端操作,並且流是惰性計算的。 因此,目前您的流代碼根本不進行任何流處理。
map.get(1)
操作返回一個已經計算出的Set。 因此,復雜度是找到該條目的一種方法:O(1),就像評論員之一已經說過的那樣。
編輯后,它應為O(n)。
但是正如Brian所說的那樣,請考慮正確的代碼而不是復雜性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.