212

▼魔方 西西 提交于 2020-03-30 12:33:24

数据结构

  • 在 JDK1.8 中,HashMap 是由 数组+链表+红黑树构成
  • 当一个值中要存储到HashMap中的时候会根据Key的值来计算出他的hash,通过hash值来确认存放到数组中的位置,如果发生hash冲突就以链表的形式存储,当链表过长的话,HashMap会把这个链表转换成红黑树来存储

在看源码之前我们需要先看看一些基本属性

//默认初始容量为16
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 
//默认负载因子为0.75
static final float DEFAULT_LOAD_FACTOR = 0.75f;
//Hash数组(在resize()中初始化)
transient Node<K,V>[] table;
//元素个数
transient int size;
//容量阈值(元素个数超过该值会自动扩容)  
int threshold;

table数组里面存放的是Node对象,Node是HashMap的一个内部类,用来表示

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!