簡體   English   中英

TreeMap集合查看迭代器的時間復雜度?

[英]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源代碼,但我不能從那里判斷。

試着根據這些好評來回答這個問題:

  1. 與整個迭代過程相比,單個next()調用具有完全不同的時間復雜度。

  2. Java中的TreeMap基於Red-Black Tree,它是一種平衡的二叉搜索樹。

請參閱https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html

  1. 迭代整個TreeMap應該具有與遍歷Red-Balck樹相同的時間復雜度(對於預訂有序或后序交叉)。 因此,時間復雜度應該是O(n) ,其中n是關鍵(或值或鍵值映射)計數。

  2. 對於單個next呼叫,我們可以在O(1) 如果整個O(n)時間復雜度為真,那應該是微不足道的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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