专栏名称: 俞其荣
向前跑 迎着冷眼和嘲笑 与 http://yuqirong.me 保持同步更新
目录
相关文章推荐
人民日报  ·  王子文,加油! ·  18 小时前  
人民日报  ·  【夜读】致高考生:高高兴兴去考试! ·  2 天前  
51好读  ›  专栏  ›  俞其荣

HashMap内部原理解析

俞其荣  · 简书  ·  · 2018-01-15 21:30

正文

请到「今天看啥」查看全文



20180114111559

源码分析

构造方法

    // 默认的构造方法使用的都是默认的初始容量和加载因子
    // DEFAULT_INITIAL_CAPACITY = 16,DEFAULT_LOAD_FACTOR = 0.75
    public HashMap() {
        this(DEFAULT_INITIAL_CAPACITY, DEFAULT_LOAD_FACTOR);
    }

    // 可以指定初始容量,并且使用默认的加载因子
    public HashMap(int initialCapacity) {
        this(initialCapacity, DEFAULT_LOAD_FACTOR);
    }

    public HashMap(int initialCapacity, float loadFactor) {
        // 对初始容量的值判断
        if (initialCapacity < 0)
            throw new IllegalArgumentException("Illegal initial capacity: " +
                                               initialCapacity);
        if (initialCapacity > MAXIMUM_CAPACITY)
            initialCapacity = MAXIMUM_CAPACITY;
        if (loadFactor <= 0 || Float.isNaN(loadFactor))
            throw new IllegalArgumentException("Illegal load factor: " +
                                               loadFactor);
        // 设置加载因子
        this.loadFactor = loadFactor;
        threshold = initialCapacity;
        // 空方法
        init();
    }

HashMap 的所有构造方法最后都会去调用 HashMap(int initialCapacity, float loadFactor) 。在其内部去设置初始容量和加载因子。而最后的 init() 是空方法。







请到「今天看啥」查看全文