当前位置: 首页 > wzjs >正文

青岛seo网站建设南京seo排名优化公司

青岛seo网站建设,南京seo排名优化公司,宜兴市做网站,云服务器安装win系统做网站概念HashMap是java中一种非常常用的基于哈希表的数据结构,允许o(1)的时间复杂度进行元素插入,查找,和删除。它通过”键-值“ 对的方式存储数据。总的来说:HashMap的底层原理:数组链表红黑树(jdk1.8之后还涉…

概念

HashMap是java中一种非常常用的基于哈希表的数据结构,允许o(1)

的时间复杂度进行元素插入,查找,和删除。它通过”键-值“ 对的方式存储数据。

总的来说:HashMap的底层原理:数组+链表+红黑树(jdk1.8之后还涉及红黑树)。

哈希函数与哈希值:每个键都会通过哈希函数计算哈希值,然后通过哈希值决定数组在那个桶(buxket)中。桶是一个数组的存储位置。

数组:hashmap底层是一个数组,每个数组元素存放一个链表或者红黑树(1.8之后)

当新元素插入hashmap时,它首先根据哈希值找到数组中的某个位置(桶)。如果该位置为空,则

则直接插入;如果该位置已经存在了元素(发生碰撞),链表或红黑树解决冲突。

hash冲突——链表和红黑树:

如果发生哈希冲突,hashMap会将相同的哈希值的元素以链表的形式存储在一个桶中(数组的某个位置)。

当链表长度过长时候,时间复杂度变为O(n).当链表长度超过一定的阈值(默认是8)时,链表会转换为红黑树,从而将时间复杂度从O(n)降低到O(log n).

负载因子和扩容:

Hash Map有一个重要的参数叫负载因子,它决定了当数组中元素数量超过数组容量的多大比例时,会触发扩容操作。默认负载因子是0.75,当HashMap的元素数量达到数组容量的75%时,HashMap会自动扩容,通常会将数组容量扩展为原来的2倍。扩容时,HashMap会重新分配一个更大的数组,并将原来的数组映射到新的数组中,这个过程叫做rehashing。过程比较耗时,因为要重新计算每个元素的哈希值,并将其放入桶中。

源码分析:

HashMap 的默认初始化容量是 16,负载因子是 0.75。

static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
static final float DEFAULT_LOAD_FACTOR = 0.75f;

HashMap 的 put 方法是插入元素的核心逻辑。
hash() 方法计算键的哈希值。为了减少哈希冲突,它通过异或运算将高位信息与低位结合,混合高位与低位的位信息.

public V put(K key, V value) {
return putVal(hash(key), key, value, false, true);
}

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

http://www.dtcms.com/wzjs/254042.html

相关文章:

  • 购卡链接网站怎么做最近的疫情情况最新消息
  • 龙岗区住房建设局网站推广app赚钱
  • 上海网站建设 润网推项目
  • 创建自己的网站要钱吗企业网站有哪些平台
  • 在线营销推广厦门seo排名收费
  • 东莞招聘网站有哪些厦门seo优化
  • 吸引流量的网站网址
  • 数学 wordpress谷歌seo网络公司
  • 内网网站建设汇报网络营销软文案例
  • 晋城建设公司网站如何能查到百度搜索排名
  • 政府网站建设原因广州最新消息
  • 做静态网站步骤免费网站建设模板
  • 电商网站建设考试题什么是网络营销战略
  • 德清县建设银行官方网站sem是什么职业岗位
  • 重庆渝北网站建设免费的网站
  • 番禺网站公司成都正规搜索引擎优化
  • 网络体系结构电脑优化大师下载安装
  • 建设银行集团网站首页重庆seo论坛
  • 杭州市建设银行网站高平网站优化公司
  • 电子商务网站建设相关职位网址seo分析
  • 网站分页导航网络营销专业就业方向
  • 彩票销信 网站怎么做网店seo排名优化
  • 网站建设 阿里免费建设个人网站
  • 怎么做微信电影网站seo技术培训学校
  • 做淘客的网站关键词有哪些产品优化是什么意思
  • 高中学校网站模板北京官网优化公司
  • 珠海建网站专业公司国际新闻最新消息今天 新闻
  • 网站管理机制建设情况完美日记网络营销策划书
  • 服饰东莞网站建设搜索引擎推广与优化
  • 毕业设计网站开发选题依据2023年6月份又封城了