当前位置: 首页> 房产> 建材 > 小程序定制公司排行榜_企业邮箱注册申请费用_今日军事新闻最新消息_永久免费个人网站注册

小程序定制公司排行榜_企业邮箱注册申请费用_今日军事新闻最新消息_永久免费个人网站注册

时间:2025/9/5 21:39:54来源:https://blog.csdn.net/2508_90580492/article/details/146515365 浏览次数:1次
小程序定制公司排行榜_企业邮箱注册申请费用_今日军事新闻最新消息_永久免费个人网站注册

一、HashMap 的位操作设计

HashMap 使用位运算优化哈希计算与索引定位,核心场景如下:

  1. 哈希扰动函数
    计算键的哈希值时,将高16位与低16位异或:

    static final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
    }
    

    作用:增加哈希值的随机性,减少因低位重复导致的冲突(例如低位相同的哈希值经过扰动后分布更均匀)。

  2. 索引定位优化
    通过 (n - 1) & hash 计算数组下标(n为数组长度)。
    关键点

    • 数组长度 n 必须为2的幂(如16、32),保证 n-1 的二进制全为1(如15→0b1111),此时按位与等效于取模运算,但效率更高。
    • 例如:哈希值为 0b10100101n=16,计算得 15 & 0b10100101 = 0b0101(即下标5)。

二、HashSet 的 contains 方法复杂度

HashSet 的 contains() 方法底层依赖 HashMap 的键查找,复杂度与哈希冲突情况相关:

  • 理想情况:哈希分布均匀时,时间复杂度为 O(1)
  • 哈希冲突时
    • 链表:退化至 O(n)(如所有元素哈希冲突形成长链表)。
    • 红黑树:优化为 O(log n)(链表长度超过8且数组容量≥64时转换为红黑树)。

底层实现

// HashSet 源码中的 contains 方法
public boolean contains(Object key) {return map.containsKey(key);  // 调用 HashMap 的 containsKey
}

三、红黑树的核心特性与作用

红黑树是 HashMap 在哈希冲突严重时的优化数据结构,其特性与优势如下:

  1. 核心特性

    • 节点颜色:非红即黑。
    • 根节点与叶子:根节点必须为黑色,叶子节点(NIL节点)视为黑色。
    • 红色节点约束:红色节点的子节点必须为黑色(确保无连续红色节点)。
    • 黑色高度平衡:从任一节点到其所有叶子路径的黑色节点数相同。
  2. 操作复杂度

    • 插入/删除/查找:时间复杂度均为 O(log n),优于链表(O(n))。
    • 旋转次数:相比 AVL 树,红黑树放宽平衡条件,减少旋转次数,更适合频繁修改的场景。
  3. 在 HashMap 中的应用

    • 转换条件:链表长度 >8 且数组容量 ≥64 时,链表转为红黑树;节点数 <6 时退化为链表。
    • 优势:避免恶意哈希攻击导致性能骤降(如大量哈希冲突使链表退化为 O(n) 查询)。

总结对比

维度HashMap 位操作HashSet 的 contains红黑树
核心目的减少哈希冲突,快速定位数组下标快速判断元素是否存在解决哈希冲突导致的查询性能问题
时间复杂度O(1)(无冲突时)O(1)/O(log n)(冲突优化后)插入/删除/查找均为 O(log n)
典型应用场景所有键值对存储操作集合元素去重与快速查找哈希冲突严重时的链表替代方案

在这里插入图片描述

关键字:小程序定制公司排行榜_企业邮箱注册申请费用_今日军事新闻最新消息_永久免费个人网站注册

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: