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

网站建设需要申请经营范围外国网站怎么进入

网站建设需要申请经营范围,外国网站怎么进入,网络营销推广的三斧,北京优质网站制作HashMap的源码分析(基于JDK1.8) Java中的HashMap是一种常用的数据结构,它是基于哈希表的数据结构,可以用来存储键值对。在HashMap中,每个键值对被称作一个Entry,每个Entry包含一个键和一个值。HashMap的实…

HashMap的源码分析(基于JDK1.8)

Java中的HashMap是一种常用的数据结构,它是基于哈希表的数据结构,可以用来存储键值对。在HashMap中,每个键值对被称作一个Entry,每个Entry包含一个键和一个值。HashMap的实现基于数组和链表,数组用于存储Entry,链表用于解决哈希冲突。

概述

HashMap是一种基于哈希表的数据结构,其内部通过哈希算法实现了对数据的快速访问。在HashMap中,每个Entry包含两个部分,一个是键,另一个是值。HashMap会根据键的哈希值和数组长度计算出每个Entry在数组中的位置,如果该位置上已经存在了一个Entry,则需要进行一些操作,如替换原来的Entry或者在链表的尾部添加一个新的Entry。如果该位置上还没有Entry,则直接将新的Entry添加到该位置上即可。

HashMap中的哈希冲突是通过链表来解决的,每个数组位置上的Entry都是一个链表,当多个Entry的哈希值相同时,它们会被添加到同一个链表中。这样,当我们通过键来获取值时,HashMap会先根据键的哈希值计算出Entry在数组中的位置,然后再遍历该位置上的链表,查找匹配的Entry,最后返回相应的值。

基本结构

HashMap的基本结构包括两个类:HashMap和Node。其中,HashMap是哈希表的实现类,Node是键值对的封装类。在JDK1.8中,Node又分为两种:普通节点(Node)和红黑树节点(TreeNode)。

普通节点是一个链表节点,它包含了一个键、一个值和一个指向下一个节点的指针。当哈希表中的Entry数量比较少时,普通节点比较适合,因为它的插入和查询操作都比较快。

红黑树节点是一种更高效的节点结构,它可以用来优化哈希表中的链表。当哈希表中的某个位置上的链表长度超过了一定的阈值时,HashMap会将该链表转化为红黑树,以提高查找效率。

构造方法

HashMap有多个构造方法,其中最常用的是不带参数的构造方法,它会创建一个默认大小为16的HashMap。在构造方法中,HashMap会初始化一个table数组来保存Entry,同时也会初始化一些其他的变量,如负载因子(loadFactor)和阈值(threshold)等。

负载因子是一个比较重要的参数,它表示哈希表在什么时候会进行扩容操作。当哈希表中的Entry数量达到了负载因子乘以数组长度时,HashMap会自动进行扩容操作,即将table数组的大小扩大一倍,并重新计算每个Entry在table数组中的位置。

阈值是一个和负载因子相关的参数,它表示哈希表在什么时候应该进行扩容操作。当哈希表中的Entry数量达到了阈值时,HashMap会自动进行扩容操作。

put方法

put方法是HashMap中最重要的方法之一,用于向哈希表中添加Entry。在put方法中,首先会根据键的哈希值计算出Entry在table数组中的位置,如果该位置上已经有了Entry,则需要进行一些操作,如替换原来的Entry或者在链表的尾部添加一个新的Entry。如果该位置上还没有Entry,则直接将新的Entry添加到该位置上即可。

需要注意的是,当哈希表中的Entry数量达到了阈值时,HashMap会自动进行扩容操作,即将table数组的大小扩大一倍,并重新计算每个Entry在table数组中的位置。扩容操作会比较耗时,因此我们要尽量避免频繁的扩容。

get方法

get方法用于根据键获取值。在get方法中,首先会根据键的哈希值计算出Entry在table数组中的位置,然后遍历该位置上的链表,查找匹配的Entry。如果找到了匹配的Entry,则返回其对应的值,否则返回null。

总结

通过对HashMap的源码分析,我们可以了解到HashMap是如何实现的,并且可以更好地理解HashMap的各种方法的作用和实现方式。同时,我们也能够更好地使用HashMap,并避免一些常见的问题,如哈希冲突和扩容等。在实际的开发中,HashMap是一种非常重要的数据结构,我们需要熟练掌握它的使用方法和注意事项,以便能够更好地完成我们的开发任务。

http://www.mmbaike.com/news/94482.html

相关文章:

  • 什邡网站建设网络营销有哪些形式
  • 建立企业网站微博付费推广有用吗
  • 长安网站建设微商怎么做推广加好友
  • 中国建设银行网站查询密码是什么意思企业推广策划公司
  • 网站建设属于哪个税收服务编码网络信息发布平台
  • 做网站设计难吗东莞seo
  • 网站公司提供程序百度排行榜
  • 赚钱链接网站百度指数三个功能模块
  • 怎么做室内设计公司网站百度爱采购怎么优化排名
  • html网页设计框架代码宁波seo在线优化
  • 做旅游网站毕设任务书网络推广员一个月多少钱
  • wordpress 免费主题seo优化关键词排名
  • 深圳做网站建设优化方案怎么写
  • 网站关键词优化方案分为几个步骤seo 工具推荐
  • 余姚网站定制网站赚钱
  • 网站推广分为哪几个部分百度模拟搜索点击软件
  • 烟台网站建设销售平台排名
  • 用http做网站隐藏端口营销课程培训
  • .vip域名的网站排名百度推广开户费用
  • wordpress tab浮动东莞seo优化排名
  • 沈阳网站设计长沙整合推广
  • 手机网址被禁止访问是怎么回事网络优化器免费
  • 如何做flash游戏下载网站网页友情链接
  • 禹州网站建设信阳搜索引擎优化
  • 做数独网站能挣钱吗长春百度网站快速排名
  • 网站首页几天做完成都推广团队
  • 石家庄模板建站系统广州网络seo优化
  • 论坛网站免费建设模板下载seo优化设计
  • 工程建设开工网站信息产品seo怎么优化
  • 天津建设工程信息网如何投标报名太原seo软件