1、HashMap是什么?
哈希表,是一种数据结构(数据结构的存储模式只有两种,顺序存储结构和链式存储结构),HashMap的主干是数组。
2、HashMap的底层原理。
HashMap的实现原理就是Entry数组 + 链表 ;JDK8中对HashMap做了优化,当链表的长度为8时,转为红黑树,提高查询效率。
3、HashMap的扩容机制。(扩容每次都是2的N次 幂的大小)
HashMap的默认数组长度是16。
扩容执行函数resize();默认的加载因子是0.75,也就是当数元素超过16*0.75=12的时候,就会自动扩容。默认扩展一倍
因为在计算存储位置的时候,都会将Hashcode和数组长度-1执行与运算。来确定存放的数组Index,因为2的n次方-1的二进制是1111,不管谁与都是能够保证Hash冲突,将低碰撞,充分利用空间.
4、扩展
HashMap线程不安全,适合在单线程中使用;ConcurrentHashMap线程安全(效率很高,因为在执行锁的时候,执行的是锁段的操作,而不是锁住整个Hash 表),适用多线程。