|
HashMap(1.8)设计思想分析
HashMap 是什么 ? 至少用来存储数据的 key,value键值对
如果计算机想要存储数据 数据的一种存储方式
数据结构:数组, 链表, 树形, 图形
惰性:数据,链表 对应 ArrayList LinkedList
验证 java 类 真的对应数据结构
图解:数组,链表 整体的感受
java代码
class Node{
data;
Node next;
Node previous;
}
HashMap数据结构
数组+链表 ->结合两者优点
对key进行hash,hash冲突后内部使用链表,链表数量过大时,把链表转成红黑树,数量降下来后,再转会链表
Node节点 随机性 落点
16
(1)整数
(2)0-15
key value Rendom.nextInt(15) 不靠谱
key.hashCode 32455 越界
整数%16
hash(key){
int hash = key.hashCode
hash%16
}
得到Node节点的位置 如果位置原来有值,则往下顺延
Node要到哪里去 自己要知道
2倍扩容 原来的要打散重新分配
|
|