hashmap
DogDogChild
我的CSDN我醉牛皮
展开
-
HashSet如何保证不重复
HashSet内部的数据结构是一个哈希表,它通过键值对的方式去存储数据,底层实际上是维护了一个HashMap,因为HashMap中的key是不可重复的。 两个对象的hashcode相等的情况下,equals方法不一定相等,但是如果equals方法相等的情况下,两个对象的hashcode一定是相等的。 这里可以理解为不同对象可能会产生相同的hashcode,但是相同对象的hashcode一定是相同的。 在java的集合中,判断两个对象是否相等的规则是: 1.判断两个对象得到hashcode(...原创 2021-02-27 10:11:29 · 644 阅读 · 0 评论 -
HashMap中hash函数,以及为啥桶长度只能是2的n次方
因为hashmap底层是通过数组+链表来实现的。显示通过数组然后在每个数组后面实现,可以把每个数组当作一个桶。 然后hashmap在调用put方法的时候会通过hash来计算该值在hashmap中存放的地址,在存放数据的时候需要考虑到散列度的问题, 不能把来的数据都放在痛一个桶里,所以需要一定的散列度。所以hashmap在计算数据存放的地址时通过对将自己的hash值经过无符号右移16位然后再做异或, 相当于就是自己的高16位与自己的低16位做异或,让自己的高16位低16位都参与运算使得结果更加散列(jdk .原创 2020-06-23 14:24:43 · 207 阅读 · 0 评论