例子:
目前,可以看出,索引= 0的位置实际上存储了A,B和C的三个键值对。它通过下一个属性将其链接在一起。该位置称为枪管。对于不同的元素,可以计算相同的功能值,以便生成“冲突”,这需要解决冲突的解决方案。“直接位置”和“冲突解决”是哈希表的两个主要特征。
当两个对象的哈希码相同时,它们的铲斗位置是相同的,并且“碰撞”将发生。
HashMap使用LinkedList存储对象。此条目(带有键 - 值对的映射对象)存储在linkedlist中;即使两个对象相同,它们也可能不相等。
当调用get()方法时,HashMap将使用键对象的哈希码查找存储桶位置;遍历linkedlist,调用keys.equals()方法以在linkedlist中找到正确的节点,直到找到值对象;该语句作为最终的对象,并使用适当的equals()和哈希科德()和哈希科德()方法降低碰撞的发生并提高效率。不概况必须缓存可以缓存不同键的标志,这将提高整个采集对象的速度。使用包装器类(例如字符串和整数)作为关键值是一个很好的选择。
默认负载系数的大小为0.75;也就是说,当地图填充了75%的水桶(例如其他收集类(例如ArrayList等))时,它将创建原始的Hashmap存储库数组来充电地图以再次为地图重新填充尺寸,并放置原始对象进入新的水桶阵列;此过程被称为重新设计,因为它称为Hash方法来找到新的存储桶位置。
原始:https://juejin.cn/post/7100421697341227038