212

数据结构

  • 在 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的一个内部类,用来表示

猜你喜欢

转载自www.cnblogs.com/miaowwwww/p/12597353.html
212