散列表即哈希表:用的是数组支持按照下标随机访问数据的特性,是数组的一种扩展。
时间复杂度:O(1)
散列函数: 对N取模,
哈希冲突:
MD5用的hash算法,也会冲突
解决冲突 :
(1)探测(线性寻址)
(2)链表(拉链)(JDK1.7采用链表法)(JKD1.8引入红黑树)
HashMap
结构:
链表+红黑树
版本:
JDK1.7 引用链表法
JDK1.8 引入了红黑树,在链表大于8的时候(因为红黑树保持平衡要经过左旋,右旋,经过测试,小于8的时候,引入红黑树划不来)