一个集合 ——有时被称为容器 —— 简单地是将多个元素组合成一个单元的对象。集合用于存储、检索、操作和传递聚合数据。通常,它们表示自然分组的数据项,例如扑克牌手(一组牌)、邮件文件夹(一组信件)或电话号码簿(名称到电话号码的映射)。如果你使用过Java编程语言 —— 或几乎任何其他编程语言 —— 你已经熟悉集合了。
什么是集合框架?
一个集合框架是一种统一的架构,用于表示和操作集合。所有的集合框架都包含以下内容:
- 接口:这些是表示集合的抽象数据类型。接口允许独立于其表示细节来操作集合。在面向对象的语言中,接口通常形成一个层次结构。
- 实现:这些是集合接口的具体实现。本质上,它们是可重用的数据结构。
- 算法:这些是在实现集合接口的对象上执行有用计算的方法,如搜索和排序。这些算法被称为多态的:即,相同的方法可以用于适当的集合接口的许多不同实现。本质上,算法是可重用的功能。
除了Java集合框架之外,最知名的集合框架例子是C++的标准模板库(STL)和Smalltalk的集合层次结构。从历史上看,集合框架一直相当复杂,这使得它们声名鹊起,被认为学习曲线陡峭。我们相信Java集合框架打破了这个传统,你将在本章中自己体会到。
Java集合框架的好处
Java集合框架提供以下好处:
- 减少编程工作量:通过提供有用的数据结构和算法,集合框架使您能够将注意力集中在程序的重要部分,而不是在必要的底层“管道”上。通过促进不相关API之间的互操作性,Java集合框架使您免于编写适配器对象或转换代码以连接API。
- 提高程序的速度和质量:该集合框架提供了高性能、高质量的有用数据结构和算法的实现。每个接口的各种实现是可以互换的,因此可以通过切换集合实现来轻松调整程序。因为您不再需要编写自己的数据结构,所以您将有更多时间来改进程序的质量和性能。
- 允许不相关API之间的互操作:集合接口是API之间传递集合的方式。如果我的网络管理API提供一个节点名称的集合,如果您的GUI工具包期望一个列标题的集合,我们的API将无缝地进行互操作,即使它们是独立编写的。
- 减少学习和使用新API的工作量:许多API自然而然地接受集合作为输入,并将它们作为输出提供。过去,每个这样的API都有一个专门用于操作其集合的小的子API。这些临时集合子API之间几乎没有一致性,因此您必须从头开始学习每一个,并且在使用它们时很容易出错。有了标准集合接口的出现,这个问题就消失了。
- 减少设计新API的工作量:这是前一个优势的反面。设计师和实施者在创建依赖于集合的API时不必每次都重新发明轮子,而是可以使用标准集合接口。
- 促进软件复用:符合标准集合接口的新数据结构本质上是可复用的。对于在实现这些接口的对象上操作的新算法也是如此。