ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Java集合框架(四)-HashMap
[打印本页]
作者:
八卦阵
时间:
2022-6-23 14:29
标题:
Java集合框架(四)-HashMap
大佬的理解->
Java集合值HashMap
1、HashMap特点
存放的元素都是键值对(key-value),key是唯一的,value是可以重复的存放的元素也不保证添加的顺序,即是无序的存放的元素的键可以为null,但是只能有一个key为null,可以有多个value为null(前提是存放的是HasHap对象)如果新添加的元素的键(key)在集合中已经存在,自动将新添加的值覆盖到原有的值
2、底层实现
HashMap的底层使用的是Node对象数组;
HashMap源码
transient Node<K,V>[] table; //Node对象数组
//Node类
static class Node<K,V> implements Map.Entry<K,V> {
final int hash;
final K key;
V value;
Node<K,V> next;
......
}
复制代码
3、扩容
HashMap的底层使用的是Node对象数组,初始容量(未自定义)是16,根据负载因子跟数组容量,计算出扩容临界值,每当存放元素达到了临界值就可以扩容,而不是等到数组长度不够;
每次扩容,都是原有数组容量的2倍,必须要保证是2的整数次幂(底层算法实现),最大容量是2的30次方;
初始容量和默认扩容因子
/**
* Constructs an empty <tt>HashMap</tt> with the default initial capacity
* (16) and the default load factor (0.75).
*/
//初始容量为16
static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
//默认扩容因子为0.75
static final float DEFAULT_LOAD_FACTOR = 0.75f;
//最大容量是2的30次方
static final int MAXIMUM_CAPACITY = 1 << 30;
public HashMap() {
this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4