首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

再也不敢使用集合默认初始化值了

概述 集合初始化通常进行分配容量、设定特定参数等相关工作。...我们以使用频率相对较高的ArrayList和HashMap为例,简要说明初始化的相关工作,并解释为什么在任何情况下,都需要显示地为集合容器设定初始化大小。...HashMap是存储K-V键值对的哈希式结构集合。 ? 分析两者的初始化相关源码,洞悉它们的容量分配、参数设定等相关逻辑,有助于更好的理解集合特性,从而提升代码质量。...public HashMap(int initialCapacity, float loadFactor) { //初始容量值小于0,抛出参数非法异常 if (initialCapacity...,Object> hashMap=new HashMap(1024); 总结 综上所述,集合初始化时,指定集合初始容量大小。

1.4K30

为什么HashMap默认初始容量为2次幂?不是2次幂会怎样?讲讲 HashMap 扰动函数?

有一个初始容量参数的构造方法HashMap(int initialCapacity) 有两个参数的构造方法HashMap(int initialCapacity, float loadFactor) 扰动函数...答案:会获得最接近的一个2的次幂作为容量 有一个初始容量参数的构造方法HashMap(int initialCapacity) 参数:initialCapacity 初始容量 public HashMap..., DEFAULT_LOAD_FACTOR); } 这个一个参数的构造方法,使用HashMap的默认负载因子,把该初始容量和默认负载因子作为入参,调用HashMap的两个参数的构造方法 有两个参数的构造方法...HashMap(int initialCapacity, float loadFactor) 参数:initialCapacity 初始容量 参数:loadFactor 负载因子 /** *...* 通过指定的初始容量和负载因子初始化一个空的HashMap * * @param initialCapacity the initial capacity 初始化容量

1K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JDK1.8HashMap源码学习-初始化

    “ 本文将主要介绍New HashMap()做了些什么以及Node数组是怎么进行初始化的。”...*/ public HashMap() { this.loadFactor = DEFAULT_LOAD_FACTOR; } /** * 设置初始容量构造方法 * 这里调用的是另外一个构造方法...* 传入的参数是客户定义的容量 * 和默认的使用率75% */ public HashMap(int initialCapacity) { this(initialCapacity, DEFAULT_LOAD_FACTOR...04 — 初始化 计算HashMap对象已经有了,那我们肯定是要向里面放数据。我们看下put方法。...初始化总结: 数组创建延迟到了第一次放数据的时候 无参构造方法采用的是默认长度16的数组和使用率0.75 有容量构造方法传入的容量是通过扩容阀值进行中间传递赋值的 HashMap的初始化就学习到这里,想继续跟随我学习了解

    30220

    为什么 HashMap 的容量大小要设置为2的N次方?

    我说小朋友:如果想指定 HashMap 对象的容量得用2的N次方 。假如不是2的N次方那么在第一次put 元素的时候也会自动把容量设置为比传入参数大的最小的2的N次方,并不是你指定的这个值。...什么是HashMap? 在弄懂标题的问题之前,首先需要清楚 HashMap 的概念。HashMap 是基于哈希表的 Map 接口的实现,线程不安全,且不保证映射顺序。...代码如下: public HashMap(int initialCapacity) {     this(initialCapacity, DEFAULT_LOAD_FACTOR); } public... HashMap(int initialCapacity, float loadFactor) {     if (initialCapacity < 0)         throw new IllegalArgumentException...MAXIMUM_CAPACITY : n + 1; } 在第一次调用 put 方法时,由于未初始化数组则会调用 resize() 方法初始化数组,而 threshold 参数则是初始化数组的长度。

    1.4K00

    HashMap源码分析(I)

    DEFAULT_INITIAL_CAPACITY HashMap默认的初始化容量,默认值16,初始化的容量可以在HashMap被初始化时进行指定,但是必须是2的幂。...MAXIMUM_CAPACITY 默认的最大容量(2的30次方),HashMap的最大容量也可以在初始化时进行指定,但指定的值必须在2的幂并且小于等于2的30次方 DEFAULT_LOAD_FACTOR...构造方法 public HashMap() {} public HashMap(int initialCapacity) {} public HashMap(int initialCapacity...extends V> m) {} HashMap的构造方法主要有上面三种,我们主要看第三种: public HashMap(int initialCapacity, float loadFactor...首先会check参数的正确性(初始化容量、负载因子),check完参数以后会设置负载因子,以及下一次扩容时HashMap中k-v的数量。

    27420

    HashMap源码研究——源码一行一行的注释

    (int initialCapacity)** **3、有两个参数的构造方法HashMap(int initialCapacity, float loadFactor)** **4、有一个Map类型的参数的构造方法...HashMap(int initialCapacity) 参数:initialCapacity 初始容量 public HashMap(int initialCapacity) { //...此处通过把第二个参数负载因子使用默认值0.75f,然后调用有两个参数的构造方法 this(initialCapacity, DEFAULT_LOAD_FACTOR); } 这个一个参数的构造方法...,使用HashMap的默认负载因子,把该初始容量和默认负载因子作为入参,调用HashMap的两个参数的构造方法 3、有两个参数的构造方法HashMap(int initialCapacity, float...* 通过指定的初始容量和负载因子初始化一个空的HashMap * * @param initialCapacity the initial capacity 初始化容量

    87510
    领券