Java内置集合类(持续更新)

Java内置集合类

此文主要用来对Java内置的集合类进行回顾总结。

PriorityQueue

  • 优先级队列内部基于一个优先堆。优先级队列中的元素要么按照natural ordering排序,要么在创建的时候指定一个Comparator比较器
  • 优先级队列本身是没有大小限制的,内部通过使用一个数组来维护一个最小堆(堆顶是最小的元素)
  • 不保证线程安全,如果需要线程安全的优先级队列,需要使用PriorityBlockingQueue,或者加锁使用PriorityQueue

HashMap

  • 使用Hash表来存储数据(数组+链表的形式),通过对key进行hash得到元素在Hash表中的位置
  • 扩容:当Map中的元素个数超过 数组大小 * 容载率的时候,就会进行扩容(容量扩大为现在的两倍)。扩容后需要对每个元素均进行hash操作,因此十分耗时
  • Fail-Fast机制:Java集合中的一种错误机制。当多个线程对同一个集合的内容进行操作时,就可能会产生fail-fast事件。在源码实现过程中是通过modCount域进行的。每次获取下一个迭代对象的时候,都判断modCount这个域是否改变,改变则直接抛出异常。

HashSet

  • HashSet是基于HashMap实现的,是HashMap的包装类
  • HashSet中的key为set中传入的key,value为一个公有的Object()对象。

HashTable

  • 是HashMap的线程安全版,Java 5中使用ConcurrentHashMap来代替。
  • 使用synchronized来实现线程安全,锁定整张hash-table

LinkedHashMap

  • 维护一个运行于所有条目的双重链表列表。此链表定义了迭代的顺序,该迭代的顺序可能是插入顺序或者访问顺序,默认为按照插入顺序迭代
  • 可以用来构建LRU(最近最少被使用)缓存,根据访问顺序构建LinkedHashMap

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值