SHHW 2023-08-01 19:34 采纳率: 66.7%
浏览 1

Hashset集合底层存储位置为什么会出现链表的情况

最近新学了一遍Hashset集合,Hashset底层是由数组加链表和红黑树组成的,当数据存入时由数组长度和哈希值运算出该存入的位置,当位置重复时后来的数据挂载在老数据下形成链表结构,但是不同数据哈希值相同也就是哈希碰撞的出现概率是很小的,而数组长度是在数组中存储的数据量大于等于数组长度加载因子时才会扩容改变,那么是不是因为数组长度的改变才导致不一样的哈希值能算出一样的存储位置呢?比如4 * 250=2050?

  • 写回答

3条回答 默认 最新

  • threenewbee 2023-08-01 19:42
    关注

    道理很简单,hash肯定比原数据范围小(hash比原数据范围大,或者相等,那么hash的意义就没有了),那么肯定没办法做到一一映射,那么肯定会有碰撞,概率小但是也是有的,那么就要链表来处理冲突。你不能说概率小就不管了。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 8月1日

悬赏问题

  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
  • ¥15 为什么eclipse不能再下载了?
  • ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥15 特定网页无法访问,已排除网页问题
  • ¥50 如何将脑的图像投影到颅骨上