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

你可能感兴趣的:(java相关)