首页 > 其他 > 详细

Map集合

时间:2022-05-27 23:00:35      阅读:10      评论:0      收藏:0      [点我收藏+]

Map集合

(1)特点:

1.存储键值对

2.键不能重复

3.值可以重复

4.无序

(2)HashMap

1.存储结构:哈希表(数组+链表+红黑树)

2.重复的依据:键的hashCode()方法和equals()方法

(3)HashMap源码分析

static final int DEFAULT_INITIAL_CAPACITY = 16;//hashMap初始容量大小
static final int MAXIMUM_CAPACITY = 1073741824;//hashMap的数组最大容量
static final float DEFAULT_LOAD_FACTOR = 0.75F;//默认加载因子
//默认加载因子:即当容量为100时,当数量达到75时,就会自动扩容
static final int TREEIFY_THRESHOLD = 8;//JDK1.8 当链表长度大于8时,变成红黑树
static final int UNTREEIFY_THRESHOLD = 6;//JDK1.8 当链表长度小于6时,变成链表
static final int MIN_TREEIFY_CAPACITY = 64;//JDK1.8 当链表长度大于8时,并且集合元素个数大于等于64时,调整成红黑树
transient HashMap.Node<K, V>[] table;//哈希表中的数组
  transient int size;//元素个数
Node : 就是键值对

(4)总结

(1)HashMap刚创建时,table是null,为了节省空间,当添加第一个元素之后,table容量调整为16
(2)当元素个数大于阈值(16*0.75=12)时,会进行扩容,扩容的大小为原来的2倍。目的是减少调整元素的个数。
(3)JDK1.8 当每个链表长度大于8,并且元素个数大于等于64时,会调整为红黑树。目的是调高执行效率
(4)JDK1.8 当链表长度小于6时,调整为链表
(5)JDK1.8以前,链表时头插入,JDK1.8以后时时尾插入

(5)hashSet和hashMap的区别

hashSet用的其实就是hashMap里的方法;

Map集合

原文:https://www.cnblogs.com/banshaoyueliang/p/15313910.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!