蜡笔小新-java-map

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 查看本文章

 




猜你喜欢

转载自blog.csdn.net/oJAVAc/article/details/43954271