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

posted @ 2020-03-30 11:18  miaowwwww  阅读(140)  评论(0编辑  收藏  举报