hashmap的时间复杂度

时间:2011-04-07 12:00:18

标签: java time-complexity

在一般情况下迭代哈希映射的时间复杂度是多少?我认为它是O(n)

我认为map.get(key);

的时间复杂度是多少O(1)

3 个答案:

答案 0 :(得分:4)

来自documentation,这应该是您的第一个停靠点:

  

此实现为基本操作(get和put)提供了恒定时间性能,假设散列函数在桶之间正确地分散元素。对集合视图的迭代需要与HashMap实例的“容量”(桶的数量)加上其大小(键 - 值映射的数量)成比例的时间。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低)非常重要。

答案 1 :(得分:2)

O(1)在正常情况下是常量,如果它们没有碰撞

另见

答案 2 :(得分:1)

来自API:

  

此实现为基本操作(get和put)提供了恒定时间性能,假设散列函数在桶之间正确地分散元素。对集合视图的迭代需要与HashMap实例的“容量”(桶的数量)加上其大小(键 - 值映射的数量)成比例的时间。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或负载因子太低)非常重要。