hashmap
中有个内部类entry 里面放了 key value 以及key的hashcode
还有个 entry[]数组 table 默认16个
当put 时候 通过key获得hashcode ,hashcode&数组长度 去定位table的下标 ,判断entity 中hashcode是否一致 不一致 判断next 知道为空 添加值
get 也是同理 通过key获得hashcode ,hashcode&数组长度 去定位table的下标 然后判断next 判断entity 中hashcode是否一致 不一致 判断next 知道为空 添加值
public HashMap() {
this.loadFactor = DEFAULT_LOAD_FACTOR;
threshold = (int)(DEFAULT_INITIAL_CAPACITY * DEFAULT_LOAD_FACTOR);
table = new Entry[DEFAULT_INITIAL_CAPACITY];//16
init();
}
当多余16个元素的时候设置table 的扩容
resize方法 2*当前的长度
替换方法就是 从新定义Entry数组 定义长度 复制原信息到newtable中,最后把实例赋值给引用的table.
本文深入探讨了HashMap的工作原理,包括其内部结构、初始化过程、如何通过哈希码定位元素位置及扩容机制等关键技术点。
2803

被折叠的 条评论
为什么被折叠?



