Java™ 教程(集合实现)

集合实现

实现是用于存储集合的数据对象,它实现了接口部分中描述的接口,本节描述了如下几种实现:html

  • 通用实现是最经常使用的实现,专为平常使用而设计。
  • 专用实现旨在用于特殊状况,并显示非标准性能特征、使用限制或行为。
  • 并发实现旨在支持高并发性,一般以单线程性能为代价,这些实现是java.util.concurrent包的一部分。
  • 包装器实现与其余类型的实现(一般是通用实现)结合使用,以提供增长的或受限制的功能。
  • 便利实现是一般经过静态工厂方法提供的小型实现,为特殊集合(例如,单例集)的通用实现提供方便、有效的替代方案。
  • 抽象实现是骨架实现,有助于构建自定义实现,一个高级主题,并非特别困难,但相对较少的人须要这样作。

通用实现总结在下表中。java

接口 哈希表实现 可调整大小的数组实现 树实现 链表实现 哈希表+链表实现
Set HashSet TreeSet LinkedHashSet
List ArrayList LinkedList
Queue
Deque ArrayDeque LinkedList
Map HashMap TreeMap LinkedHashMap

从表中能够看到,Java集合框架提供了SetListMap接口的几种通用实现。在每种状况下,其余全部条件都相同状况下,一个实现(HashSetArrayListHashMap)显然是用于大多数应用程序的一个实现。请注意,SortedSetSortedMap接口在表中没有列出,每一个接口都有一个实现(TreeSetTreeMap),并在SetMap行中列出。有两种通用的Queue实现 — LinkedList(它也是List实现)和PriorityQueue(表中省略)。这两种实现提供了很是不一样的语义:LinkedList提供FIFO语义,而PriorityQueue根据其值对元素进行排序。程序员

每一个通用实现都提供其接口中包含的全部可选操做,所有容许null元素、键和值,都不是同步的(线程安全的),它们都具备快速失败的迭代器,该迭代器可在迭代过程当中检测到非法的并发修改,而且能够快速干净地失败,而不会在将来的不肯定时间冒着任意、不肯定的行为的风险。所有都是Serializable,而且都支持公共clone方法。编程

这些实现不一样步的事实表明了与过去的突破:遗留集合VectorHashtable已同步,之因此采用本方法,是由于在同步没有好处的状况下常用集合。这些用途包括单线程使用、只读使用和做为实现自身同步的较大数据对象的一部分使用,一般,最好的API设计作法是不要让用户为不使用的功能付费,此外,在某些状况下,没必要要的同步可能致使死锁。segmentfault

若是须要线程安全的集合,则在“包装实现”部分中介绍的同步包装器容许将任何集合转换为同步集合。所以,对于通用实现来讲,同步是可选的,而对于遗留实现来讲,它是强制性的。此外,java.util.concurrent包提供了BlockingQueue接口(扩展Queue)和ConcurrentMap接口(扩展Map)的并发实现,这些实现比单纯的同步实现提供更高的并发性。api

一般,你应该考虑接口,而不是实现,这就是为何本节中没有编程示例的缘由,在大多数状况下,实现的选择仅影响性能。首选样式,如“接口”部分所述,是在建立集合时选择一种实现,并当即将新集合分配给相应接口类型的变量(或将集合传递给须要接口类型参数的方法)。这样,程序就不会依赖于给定实现中添加的任何方法,从而使程序员在有性能问题或行为细节保证的任什么时候候均可以自由更改实现。数组

实现总结

实现是用于存储集合的数据对象,它们实现了接口课程中描述的接口。安全

Java集合框架提供了几个核心接口的通用实现:并发

  • 对于Set接口,HashSet是最经常使用的实现。
  • 对于List接口,ArrayList是最经常使用的实现。
  • 对于Map接口,HashMap是最经常使用的实现。
  • 对于Queue接口,LinkedList是最经常使用的实现。
  • 对于Deque接口,ArrayDeque是最经常使用的实现。

每一个通用实现都提供其接口中包含的全部可选操做。oracle

Java集合框架还为须要非标准性能、使用限制或其余异常行为的状况提供了几种特殊用途的实现。

java.util.concurrent包包含几个集合实现,这些实现是线程安全的,但不受单个排除锁的约束。

Collections类(与Collection接口相对)提供了对集合进行操做或返回集合的静态方法,这些方法称为包装实现。

最后,有几种便利的实现,当你不须要通用实现时,它们的效率可能会比通用实现高,可经过静态工厂方法提供便捷实现。


上一篇:聚合并行性

相关文章
相关标签/搜索