HashMap (myHashMap.entrySet().iterator().next()
和myHashMap.keySet().iterator().next()
和myHashMap.values().iterator().next()
)的所有3个集合视图迭代器的时间复杂性在javadoc中都有详细记录,它是<这三个迭代器的em> O(n + c)(n是映射数,c是容量,即哈希表中存储桶的物理数量)。
但是,分别有3个TreeMap集合视图的3个迭代器呢?官方javadoc中没有任何内容。它们的复杂性是什么?我确实看过SE8源代码,但我不能从那里判断。
答案 0 :(得分:3)
请根据以下出色评论来回答:
与整个迭代过程相比,单个next()
调用的时间复杂度完全不同。
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)
时间复杂度为真,那么这应该是微不足道的。