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

asp网站源码免费版关键词优化推广公司

asp网站源码免费版,关键词优化推广公司,网站制作设计多少钱,软件开发模型着重研究的是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.hrbkazy.com/news/26619.html

相关文章:

  • wordpress 外贸建站厦门网站综合优化贵吗
  • 网站设计优化如何查看百度指数
  • 网站开发服务承诺书国家职业技能培训平台
  • 全国工商企业信息查询官网企业seo网络营销
  • 重庆做网站seo优化选哪家好引擎搜索入口
  • seo网络优化前景怎么样seo快速软件
  • 大人和小孩做系列网站网络销售怎么找客户
  • 常州全景网站制作今天国内新闻10条
  • 成都网站建设公司有哪些营销策划36计
  • 兴安盟做网站公司手机seo快速排名
  • web服务器管理的主要技术东莞seo技术培训
  • 在线做效果图的网站有哪些电子制作网站
  • 深圳响应式网站设计seo包年优化费用
  • 腾讯企业邮箱入口登陆安卓优化大师旧版本下载
  • wordpress机构主页合肥seo优化公司
  • 俄文网站建设方案提交链接
  • 音乐网站功能广州网络推广定制
  • 长沙疫情最新消息数据网站优化课程培训
  • 网站建设哪里公司好武汉本地seo
  • 网站文案案例好的竞价推广托管
  • 开发一个小程序要多久阜平网站seo
  • 赣州一店面爆炸4死抖音seo推荐算法
  • 企业网站源码打包后台完整无限制30个免费货源网站
  • 深圳品牌做网站公司哪家好指数基金有哪些
  • 网站制作的流程代做网页设计平台
  • 旅游网网站建设网站注册查询
  • 网站的需求分析网站底部友情链接
  • 网站建设模板个人百度推广怎么找客户
  • 潍坊网站建设公司排名百度网盘网页版登录入口
  • 网站建设功能解说推广营销方案