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源码
  1. transient Node<K,V>[] table; //Node对象数组
  2. //Node类
  3. static class Node<K,V> implements Map.Entry<K,V> {
  4.         final int hash;
  5.         final K key;
  6.         V value;
  7.         Node<K,V> next;
  8.         ......
  9. }
复制代码
3、扩容

初始容量和默认扩容因子
  1. /**
  2. * Constructs an empty <tt>HashMap</tt> with the default initial capacity
  3. * (16) and the default load factor (0.75).
  4. */
  5. //初始容量为16
  6. static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
  7. //默认扩容因子为0.75
  8. static final float DEFAULT_LOAD_FACTOR = 0.75f;
  9. //最大容量是2的30次方
  10. static final int MAXIMUM_CAPACITY = 1 << 30;
  11. public HashMap() {
  12.     this.loadFactor = DEFAULT_LOAD_FACTOR; // all other fields defaulted
  13. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4