美国上市公司,专注Java培训22年

HashMap与hashcode学术版与讲故事版解释


HashMap与hashcode学术版与讲故事版解释学术化说法:

*Map是一个接口,HashMap是Map的子类,为了实例化对象

*在HashMap中维护着一个数组,数组是由元素构成的,

*每个元素中又有一个链表,所以相当于现在数组由很多链表构成,

*而链表由节点组成,每一个节点中有一个键值对(key&value)。

*所以理一下他们的关系就是(从大到小):数组-链表(元素)-键值对(节点)

*hashcode()是一个方法,一个可以获得键值对地址的方法,由计算机进行散列运算

*这个运算是程序后台运行的,我们不需要知道。

*这个运算会把地址变成一个整数形式,而这个整数就是数组的下标,会告诉你在哪一个链表

*要找到这个键值对,还需要遍历链表,找到节点。

*

*讲故事说法:

*有一个公司叫做HashMap。它拥有自己的一个仓库,这个公司特别土豪,

*买了一栋楼来做仓库,那个栋楼取名叫做数组。这家公司做的生意分很多种类,

*所以不同楼层储存不同种类的货物,如:1楼衣服,2楼家具,3楼电器。

*这家公司特别奇葩,把楼层称作 元素,所以就是,1元素衣服,2元素家具,3元素电器。

*每一个元素,也就是楼层,都是环形的,公司觉得这样好看,又好找东西,只需要转一圈就可以走遍所有房间。

*公司管这个环形的布局叫做 链表。每一个房间就是链表上的 节点。房间里面就藏一种货物,房门上有标牌提示。

*如:标牌写沙发,房间里就一堆沙发,标牌写椅子,房间里就一堆椅子。

*公司觉得英文名特牛逼,所以管标牌叫key,房间里的就是货物叫value。

*如:key是沙发,value一堆沙发,key是椅子,value一堆椅子。

*那么仓库都布局好了,不用多浪费?得放东西进去。

*公司进了一批货,沙发,要放到这个叫数组的仓库里,2楼(元素)藏家具,

*2元素(楼)里面,公司挑了一间房间,key(标牌)写上沙发,然后把那堆沙发放进去就完了。

*过了几个月,又来了一批新货,也是沙发,之前那批沙发太差,该淘汰了,

*这公司追求高科技,买了个机器人来放货物,可是告诉它“2元素(楼)”,它听不懂啊。

*公司发明了一个方法,叫hashcode(),只需要把key(标牌)输进去,它就自动给你一个整数。

*但是也不够高级,只能告诉你楼层,具体房间得让机器人自己找,不过那也是方便很多的。

*如,输入“沙发”,它自动显示2这个整数,这下机器人听懂了,找到那个2元素(楼),

*在2元素(楼)的链表(环形)转了一圈,找到key(标牌)写着沙发的房间,把之前的沙发扔了,新的放进去。

*最后理一下:

*HashMap=公司

*楼(仓库)=数组

*楼层=数组元素

*每层楼的环形结构=链表(说白了就是一圈房间)

*每一间房间=节点

*房间上的标牌=key

*房间里的货物=value

*hashcode(),一个输入key就能告诉你楼层整数的工具


【免责声明】本文部分系转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,如涉及作品内容、版权和其它问题,请在30日内与我们联系,我们会予以重改或删除相关文章,以保证您的权益!

Java开发高端课程免费试学

大咖讲师+项目实战全面提升你的职场竞争力

  • 海量实战教程
  • 1V1答疑解惑
  • 行业动态分析
  • 大神学习路径图

相关推荐

更多
  • 一个故事讲完https
    一个故事讲完https
    感谢大家阅读由java培训机构分享的“一个故事讲完https”希望对大家有所帮助 详情>>

    2017-08-31

  • GitHub 上火的 Java 框架
    GitHub 上火的 Java 框架
    Java 是目前最需要的编程语言之一。在这里,我们已经挖掘了一些关于框架趋势的有用信息,也就是最受开发者青睐的 Java 框架,名单如下 详情>>

    2017-10-24

  • Java入门学习路径,没有之一
    Java入门学习路径,没有之一
    作为刚刚进入Java领域的新同学,无论是高校的毕业大学生,还是有志转行的在职人员,都面临着诸多的困惑。今天java培训班就来为大家讲解下Java入门学习路径 详情>>

    2017-11-23

  • java初学者学习心得
    java初学者学习心得
    学习了一学期的Java课程,觉得是该总结自己的心得体会了。开始学习任何一门课(包括java),兴趣最重要。下面请看java培训机构带来的分享 详情>>

    2017-12-12

  • Java开班时间

    收起