Java常用集合,编码优化,Map篇

本文介绍了Java中的常见Map集合,包括HashMap、HashTable、LinkedHashMap和TreeMap。HashMap是非线程安全且允许null值,内部基于数组+链表实现。HashTable线程安全但不支持null值。LinkedHashMap在HashMap基础上增加顺序性,而TreeMap则提供了排序功能,基于红黑树实现。此外,文章还提到了集合访问的优化技巧。
摘要由CSDN通过智能技术生成

常用Map集合包括:HashMap,HashTable,LinkedHashMap,TreeMap

HashMap与HashTable:

HashTable是线程安全的,它的key与value不允许为null值。HashMap则允许key或value为null,HashMap与HashTable对key的hash算法和hash值到内存的映射算法不同。

HashMap的数据结构:HashMap底层使用数组实现,数组内存储Entry对象,这也是Map迭代时可以使用Map.Entry的原因。Entry对象包含了key,value,hash,next。next指向另外一个Entry,因此HashMap实际上是一个链表的数组。当Map的put()方法产生冲突时,新的值会替换旧值,同时next指向旧值,这样在一个数组索引空间存放多个值。

HashMap的构造方式:HashMap构造时可以指定其数组的容量参数,和负载因子,默认情况其容量为16,负载因子为0.75,同时内部维护一个thresHold阈值,为负载因子*当前数组容量,当实际存入的元素个数超过阈值时,HashMap会进行扩容,因此HashMap的填充比不会超过负载因子,合理的指定容量与负载因子,减少hash冲突,可以提高HashMap的操作效率。

有序的HashMap---LinkedHashMap:

LinkedHashMap在继承HashMap基础上,维护了一个链表,依据构造函数参数LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder),维护两种内部元素的顺序,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值