我知道哈希法的复杂度O(1)。
即使key的类型是某个类,也能哈希吗?java怎样哈希一个任意的类呢?
准确地说,是“java怎样哈希一个任意的类的实例呢?”
java中HashMap查找的时间复杂度是多少?
答案:3 悬赏:60 手机版
解决时间 2021-12-24 10:32
- 提问者网友:喧嚣尘世
- 2021-12-23 22:43
最佳答案
- 五星知识达人网友:末日狂欢
- 2021-12-23 22:54
如果一个类没有重写hash方法,那么就是默认使用Object的hash方法。
怎么实现的,可以看Object类的源码。
hashMap是用数组加链表来实现的。
containsKey的复杂度是O(1)
containsValue的复杂度是O(n)
怎么实现的,可以看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;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯