HashMap
L雷歌儿
这个作者很懒,什么都没留下…
展开
-
HashMap系列之重要方法源码详解
** HashMap 中重要的构造方法:**1、构造一个空的 HashMap,默认初始容量(16)和默认负载因子(0.75)。public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; // 将默认的加载因子0.75赋值给loadFactor,并没有创建数组}2、 构造一个具有指定的初始容量和默认负载因子(0.75)HashMap。 // 指定“容量大小”的构造函数 public HashMap(int initialCapa.原创 2020-07-11 16:35:16 · 130 阅读 · 0 评论 -
HashMap系列之成员变量介绍
1、初始化容量当我们根据key的hash确定其在数组的位置时,如果n为2的幂次方,可以保证数据的均匀插入,如果n不是2的幂次方,可能数组的一些位置永远不会插入数据,浪费数组的空间,加大hash冲突;一般我们可能会想通过 % 求余来确定位置,只不过性能不如 & 运算。而且当n是2的幂次方时:hash & (length - 1) == hash % length;HashMap 容量为2次幂的原因,就是为了数据的的均匀分布,减少hash冲突,毕竟hash冲突越大,代表数组中一个链的长度原创 2020-07-11 15:23:15 · 734 阅读 · 0 评论 -
HashMap系列之底层数据结构
HashMap系列之底层数据结构数据结构的概念 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。HashMap的底层数据存储过程使用代码:public class Demo01 { public static void main(String[] args) { HashMap<String, Inte原创 2020-07-06 16:35:36 · 275 阅读 · 0 评论 -
HashMap系列之基本概念
理论概念HashMap基于哈希丟的Map接口实现,是以key-value存锗形式存在。它是线程不安全的,key值和value值允许为null。JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的,哈希冲突是由于两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同引起的,通常采用“拉链法”解决冲突。JDK1.8 以后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(或者红黑树的边界值,默认为8)并且.原创 2020-07-06 15:44:37 · 160 阅读 · 0 评论