Java容器(List、Set、Map)知识点快速复习手册(中)
前言 本文快速回顾了Java中容器的知识点,用作面试复习,事半功倍。 上篇:主要为容器概览,容器中用到的设计模式,List源码 中篇:Map源码 下篇:Set源码,容器总结 其它知识点复习手册 Java基础知识点面试手册(上) Java基础知识点面试手册(下) Java容器(List、Set、Map)知识点快速复习手册(上) HashMap http://wiki.jikexueyuan.com/project/java-collection/hashmap.html 源码分析: https://segmentfault.com/a/1190000014293372 关键词 初始容量16 扩容是2倍,加载因子0.75 头插法 0桶存放null 从 JDK 1.8 开始,一个桶存储的链表长度大于 8 时会将链表转换为红黑树(前提:键值对要超过64个) 自动地将传入的容量转换为2的幂次方 保证运算速度:确保用位运算代替模运算来计算桶下标。hash& (length-1)运算等价于对 length 取模。 hash均匀分布:数据在数组上分布就比较均匀,并且能够利用全部二进制位,也就是说碰撞的几率小, table数组+Entry []链表(散列表),红黑树 扩容操作需要把键值对重新插入新的 table 中,重新计算所有key有特殊机制(JDK1.8后) 存储结构