永发信息网

java中HashMap查找的时间复杂度是多少?

答案:3  悬赏:60  手机版
解决时间 2021-12-24 10:32
  • 提问者网友:喧嚣尘世
  • 2021-12-23 22:43
我知道哈希法的复杂度O(1)。
即使key的类型是某个类,也能哈希吗?java怎样哈希一个任意的类呢?
准确地说,是“java怎样哈希一个任意的类的实例呢?”
最佳答案
  • 五星知识达人网友:末日狂欢
  • 2021-12-23 22:54
如果一个类没有重写hash方法,那么就是默认使用Object的hash方法。
怎么实现的,可以看Object类的源码。
hashMap是用数组加链表来实现的。

containsKey的复杂度是O(1)
containsValue的复杂度是O(n)
全部回答
  • 1楼网友:迟山
  • 2021-12-24 00:00
这个可以直接去看HashMap的源码,“java怎样哈希一个任意的类的实例呢?” 简单地说 就是通过类的equals和hashCode方法。
  • 2楼网友:不甚了了
  • 2021-12-23 23:49
containskey的复杂度是o(1),它是直接根据给定的参数key来计算hashcode,看看相关位置上是否有。如果相关位置已被占用,就继续寻找下一个位置。下面是jdk实现containskey的主要代码: int hash = hash(k); int i = indexfor(hash, table.length); entry e = table[i]; while (e != null) { if (e.hash == hash && eq(k, e.key)) return true; e = e.next; }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯