[英]TreeMap collection views iterators time-complexity?
HashMap的所有3個集合視圖迭代器的時間復雜度( myHashMap.entrySet().iterator().next()
和myHashMap.keySet().iterator().next()
和myHashMap.values().iterator().next()
)在javadoc中有詳細記錄,所有這3個迭代器都是O(n + c) (n是映射數,c是哈希表中桶的物理數量的容量)。
但是3個相應的TreeMap集合視圖的3個迭代器呢? 官方的javadoc沒有說什么。 它們的復雜性是什么? 我確實看過SE8源代碼,但我不能從那里判斷。
試着根據這些好評來回答這個問題:
與整個迭代過程相比,單個next()
調用具有完全不同的時間復雜度。
Java中的TreeMap基於Red-Black Tree,它是一種平衡的二叉搜索樹。
請參閱https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html
迭代整個TreeMap應該具有與遍歷Red-Balck樹相同的時間復雜度(對於預訂有序或后序交叉)。 因此,時間復雜度應該是O(n)
,其中n
是關鍵(或值或鍵值映射)計數。
對於單個next
呼叫,我們可以在O(1)
。 如果整個O(n)
時間復雜度為真,那應該是微不足道的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.