簡體   English   中英

使用Java 8流和謂詞的這段代碼的時間復雜度

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM