包含取决于hashmap大小的hashmap的操作?

时间:2014-06-08 03:49:34

标签: java hashmap

根据我对hashmap的理解

问题1: - 对于Hashmap,返回每个键的唯一哈希码

  

确定对象是否包含在hashmap中的时间是不变的   并且不依赖于hashmap的大小

问题2: - 对于Hashmap,为每个键返回相同的哈希码,但为equals方法返回false

  

确定对象是否包含在hashmap中的时间取决于hashmap的大小

这是真的吗?

2 个答案:

答案 0 :(得分:3)

通常认为hashmap查找只需要O(1)时间。这是查询的平均时间。但在最坏的情况下,它也可能是O(n)。例如,如果在hashmap的实现中使用链接列表,则可能发生此情况。但是如果使用自平衡树可以避免将最坏情况下的情况减少到O(log n)时间。

答案 1 :(得分:1)

如果我们有一个适当编写的哈希函数,那么检索顺序就是O(1)。

可以这样想,如果您的哈希函数被正确编写,以便元素分布在存储桶中,那么搜索元素的时间将与存储桶的大小成比例。现在,如果你有一个恒定大小的存储桶,并且桶的数量或内存大小不是约束,那么你将能够在恒定时间内检索该元素。

关于你的第二个问题:是的,如果你有一个哈希函数返回相同的哈希码,那么元素的检索顺序将与hashmap的大小成正比,也称为O(n)