TreeMap集合视图迭代器的时间复杂度?

时间:2018-12-07 13:26:09

标签: java time-complexity treemap

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源代码,但我不能从那里判断。

1 个答案:

答案 0 :(得分:3)

请根据以下出色评论来回答:

  1. 与整个迭代过程相比,单个next()调用的时间复杂度完全不同。

  2. Java中的
  3. 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)时间复杂度为真,那么这应该是微不足道的。