Collection(下称"对象集") 指一个能够表示一组对象的对象(比如数组)。Java 平台提供了一个 Collections 框架,它是一个统一的架构,用来表示和处理对象集,同时又对每一个具体的对象集做了很多实现上的算法优化。
Collections 框架的主要优点有:
- 降低编程成本:这些数据结构和算法都已经摆在那里,你就不用自己实现了。
- 提升性能:提供的数据结构和算法实现都是高性能的。每个接口内部都提供了多种可以互相替代的实现,程序可以通过替换实现来进行性能调优。
- 提供了无关 API 间的内部交互:建立了一个通用的语义,给 API 传入和传出对象集。
- 更容易学习 API:你不需要学习一些特别的对象集 API。
- 更容易设计和实现 API:你不需要设计和实现一些特别的对象集 API.
- 促进软件复用:框架提供了标准的接口和实现,这本身就是很好的软件复用。
Collections 框架由以下部分组成:
- 对象集接口:表示不同的对象集类型,比如集合(set)、列表(list)、映射(map)等,这些接口形成了框架的基础。
- 通用实现:对象集接口的基本实现。
- 早期实现:一些像 Vector 和 Hashtable 这样在早期 java 版本中就提供的对象集实现,在当前版本也实现了对应的对象集接口。
- 特别目的的实现:适用于特定场景的实现,这些实现带来了特别的性能体验,但也包含一些使用限制和特殊的行为表现。
- 并发实现:为高并发用途而设计的实现。
- 封装实现:对其他实现添加了额外的功能,比如说同步功能。
- 传统实现:高性能的对象集“最小实现”。???
- 抽象实现:为了方便定制实现,实现一部分对象集接口。
- 算法:一组静态方法,提供用于对象集上的有用操作,比如列表的排序。
- 数组工具:用于操作原始类型数据或是引用对象数组的工具函数。不严格地说,这也是 Collections 框架的一部分,这个特性是跟 Collections 框架同步发布的,底层也用了一些共同基础逻辑。
对象集接口
对象集接口主要分为两大类:java.util.Collection 和 java.util.Map
java.util.Collection 的子接口包括:
- java.util.Set
- java.util.SortedSet
- java.util.NavigableSet
- java.util.Queue
- java.util.concurrent.BlockingQueue
BlockingQueue 处理生产者-消费者模式的多线程模型是一把好手。
- java.util.concurrent.TransferQueue
- java.util.Deque
- java.util.concurrent.BlockingDeque
java.util.Map 的子接口包括:
- java.util.SortedMap
- java.util.NavigableMap
- java.util.concurrent.ConcurrentMap
在 Map 基础上提供了一些像 putIfAbsent 这样的原子方法
- java.util.concurrent.ConcurrentNavigableMap
上述接口中有很多方法被标注为可选的(optional),这意味着允许具体的实现类不实现这些方法,被调用到的时候直接抛出一个 UnsupportedOperationException 异常。
通用实现
下面这个表格总结了 Collections 框架中的通用实现类。
接口
|
HashTable
|
Resiable Array
|
Balanced Tree
|
Linked List
|
Hash Table
+ LinkedList
|
Set
|
HashSet
|
|
TreeSet |
|
LinkedHashSet
|
List
|
|
ArrayList
|
|
LinkedList
|
|
Deque
|
|
ArrayDeque
|
|
LinkedList
|
|
Map
|
HashMap
|
|
TreeMap |
|
LinkedHashMap
|
上述的通用实现类都实现了所有的可选操作,对他们装填的元素也没有任何限制。值得注意的是它们都不是线程安全的,另外所有新的实现都有 fail-fast 迭代器,就是在迭代的时候如果检测到容器结构被修改了,就抛出 ConcurrentModificationException 异常。
支持并发的对象集
在并发程序中使用对象集需要非常小心,好在 Collections 框架提供了多种对并发访问友好的 API,这些类型比同步的封装类好用多了。
支持并发的接口如下:
- BlockingQueue
- TransferQueue
- BlockingDeque
- ConcurrentMap
- ConcurrentNavigableMap
对应的实现类如下:
- LinkedBlockingQueue
- ArrayBlockingQueue
- PriorityBlockingQueue
- DelayQueue
- SynchronousQueue
- LinkedBlockingDeque
- LinkedTransferQueue
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- ConcurrentSkipListSet
- ConcurrentHashMap
- ConcurrentSkipListMap
设计哲学
主要的设计目标是产生一个小而精的对象集 API。
为了做到接口数量足够小,对于像可变性、可修改性这样的不同细节,不是通过多个接口来区分,而是通过接口的可选方法来实现。
为了让接口内部的方法足够少,这些方法必须满足下面的某个条件:
- 真的是一个基础操作
- 一些特别高效的实现,覆写了该方法后可以达到显著的性能提升
相关推荐
Java Collections框架是Java平台的标准库之一,它为开发人员提供了强大的数据结构支持。Java Collections框架设计优雅且功能强大,它不仅简化了开发人员处理集合对象的方式,还提高了程序的可读性和可维护性。本书...
Collection 是 Java Collections 框架中的一个接口,定义了集合的基本操作,例如 add、remove、contains 等。collections 是 Collection 的一个实现类,提供了多种集合类,例如 ArrayList、LinkedList、HashSet 等。...
《Java Collections》是Apress出版社出版的一本专著,它深入浅出地讲解了Java Collections框架,这是一套用于管理对象集合的强大的API。这本书针对Java程序员,无论你是初学者还是经验丰富的开发者,都能从中...
Java的Collections框架是Java编程中不可或缺的一部分,它提供了一组高效、灵活的工具类和接口,用于管理和操作各种数据结构,如列表(List)、集合(Set)、映射(Map)等。这个框架使得开发者能更方便地处理数据,提高了...
Java Collections框架是Java编程语言中一个至关重要的部分,它提供了对数据结构的高效管理,包括各种集合类,如List、Set、Queue等,以及映射类Map。在本研讨会资料中,我们将深入探讨这个框架的核心概念、设计模式...
Java 集合框架(JCF:Java Collections Framework)之概述 Java 集合框架(JCF:Java Collections Framework)是 Java 语言中的一组类库,用于实现集合操作的统一标准。集合是计算机科学中的一种基本概念,来源于...
《Data Structures and the Java Collections Framework》这本书可能涵盖了如何有效地使用各种数据结构,如何根据需求选择合适的Java集合框架实现,以及如何通过这些工具解决实际问题。此外,它可能还会讨论并发编程...
Java Collections框架是Java编程语言中用于管理集合的重要组成部分,它提供了对对象集合的高效操作和组织方式。在Java中,集合主要用于存储一组对象,而数组虽然也能存储对象,但其长度固定,不适合处理动态变化的...
《APress - Java Collections》这本书由John Zukowski编写,深入探讨了Java集合框架的各种细节,为读者提供了理解和应用Java集合类的重要知识。本书版权属于作者John Zukowski,并于2001年出版,所有权利受法律保护...
通过这种映射关系,可以在教学中将Java Collections框架的讲授与数据结构的知识体系相结合,从而加深学生对数据结构在Java编程中应用的认识。 文章强调,Java Collections框架的设计目的主要是满足高性能、一致性、...
4. **排序与比较**:Java集合框架提供了多种排序方式,例如`Collections.sort()`方法可以对List进行排序。为了支持自定义排序规则,Java还提供了`Comparator`接口,用户可以通过实现该接口来定义比较逻辑。 5. **...
Java集合框架是Java编程语言中的一个核心组件,它为组织和操作对象提供了高效的数据结构。在Java中,集合框架是一个接口和类的集合,这些接口和类定义了用于存储、管理和处理对象的标准方法。这个框架使得程序员能够...
《Java Collections》这本书是关于Java编程语言中集合框架的权威指南。集合框架是Java编程语言的核心组成部分,提供了大量用于存储和操作对象的接口和类。由于集合在Java程序中扮演着至关重要的角色,因此对于任何...
Java Collections框架是Java语言的核心部分,JavaCollections.xml很可能是关于集合类(如ArrayList、LinkedList、HashSet、HashMap等)的操作代码片段。这些可能包括添加元素、删除元素、遍历集合、集合排序等常见...
在Java编程中,`List`接口是集合框架的重要组成部分,提供了有序的元素存储。...通过阅读和理解`Collections.sort()`的源码,开发者可以进一步提升自己的技能,同时也能更好地理解和运用其他Java集合框架的方法。
Java集合框架还包括工具类,如Collections和Arrays,提供了一些静态方法,用于集合的排序、复制、比较等操作。此外,Java 8引入了流(Stream)API,提供了新的处理集合数据的方式,支持并行操作,使得代码更加简洁、...
本文将基于《Java Collections》这本书中的内容,深入探讨 Java 集合框架中的关键概念和技术细节。 #### 二、Java 集合框架概述 Java 集合框架是由一系列接口和类组成的,它们共同提供了一种灵活且高效的方式来...