Java的HashMap键值对存储结构解析
发布时间:2020-12-15 07:59:26 所属栏目:Java 来源:网络整理
导读:容器总体结构 ?Map存储键值对的数据结构是“数组+链表”的结构,结合了数组查询数据快和链表增删数据快的优点;用Entry[]存储键值对,Entry为类类型,类里面有四个属性:hash、K、V、next,分别存储哈希值、键对象、值对象、下一个Entry对象引用。 Entry底层
容器总体结构 ?Map存储键值对的数据结构是“数组+链表”的结构,结合了数组查询数据快和链表增删数据快的优点;用Entry[]存储键值对,Entry为类类型,类里面有四个属性:hash、K、V、next,分别存储哈希值、键对象、值对象、下一个Entry对象引用。 Entry底层源码 Entry对象存储结构图 Entry数组存储结构图 HashMap存储数据过程示意图 我们的目的是将”key-value两个对象”成对存放到HashMap的Entry[]数组中。参见以下步骤: ? ? ??(1) 获得key对象的hashcode ? ? ? ? ? ?首先调用key对象的hashcode()方法,获得hashcode。 ? ? ??(2) 根据hashcode计算出hash值(要求在[0,数组长度-1]区间) ? ? ? ? ? ?hashcode是一个整数,我们需要将它转化成[0,数组长度-1]的范围。我们要求转化后的hash值尽量均匀地分布在[0,数组长度-1]这个区间,减少“hash冲突” (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |