阅读 57

Map集合

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[] 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里的方法;

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

文章分类
百科问答
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐