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.
扫描二维码关注公众号,回复:
5545074 查看本文章