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