容器关系:Map

关系图

在这里插入图片描述
图来自https://www.cnblogs.com/wuyuegb2312/p/4458468.html

Map

Map接口: 除了定义基本操作,还包含了返回包含所有key的Set (Key不能重复)、包含所有value的collection的方法。如果用一个可变对象作为Map的key,若key值变化影响到了equals(),会导致Map行为不确定。Map接口中有一个内部接口Map.Entry,定义为Entry<K,V>,表示Map中的一个键值对

Hashtable类: 兼容以前的代码,现在基本不使用

AbstractMap抽象类: 对Map接口进行了一些基本的实现

HashMap类: 底层用数组和链表实现的,线程不安全。允许null元素,这个key没办法做哈希值的计算,只能遍历哈希值数组,找到首元素的key为null的队列。put()、get()复杂度为O(1)。初始大小和加载因子会影响HashMap的性能。

LinkedHashMap类: 所有的Entry组成了一个双向链表(可以使用插入顺序或LRU顺序访问所有元素),插入顺序,线程不安全。LinkedHashMap不像HashMap这样无序,也不像TreeSet会带来额外的开销

WeakHashMap类: 与HashMap类似,其内部包含了一个ReferenceQueue,并且它的Entry是继承自WeakReference的。通过这种方式,在clear()、resize()、size()、getTable()时,都会调用expungeStaleEntries()方法,垃圾回收掉不再使用的映射关系

SortedMap接口: SortedMap中的所有元素都是排过序的。这个“排序”不同于LinkedHashMap中将所有元素组织成一个链表,而是指任意任意两个元素都可以比较大小关系,并根据这个比较规则Comparator进行排序。更准确的说,是键的大小关系。

TreeMap类: 基于NavigableMap实现的红黑树,线程不安全,自动排序(自然顺序或自定顺序),不允许null元素。get()put()containsKey()remove()复杂度均为O(logN)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值