# 课程：集合简介

> 原文： [https://docs.oracle.com/javase/tutorial/collections/intro/index.html](https://docs.oracle.com/javase/tutorial/collections/intro/index.html)

_ 集合 _ - 有时称为容器 - 只是一个将多个元素组合成一个单元的对象。集合用于存储，检索，操作和传递聚合数据。通常，它们表示形成自然组的数据项，例如扑克牌（卡片集合），邮件文件夹（字母集合）或电话目录（名称到电话号码的映射）。如果您使用过 Java 编程语言 - 或者只使用其他任何编程语言 - 那么您已经熟悉了集合。

## 什么是馆藏框架？

_ 集合框架 _ 是用于表示和操作集合的统一架构。所有集合框架都包含以下内容：

*   **接口：**这些是表示集合的抽象数据类型。接口允许独立于其表示的细节来操纵集合。在面向对象语言中，接口通常形成层次结构。
*   **实现：**这些是集合接口的具体实现。实质上，它们是可重用的数据结构。
*   **算法：**这些是对实现集合接口的对象执行有用计算（如搜索和排序）的方法。算法被认为是 _ 多态 _：也就是说，相同的方法可以用于适当的集合接口的许多不同实现。实质上，算法是可重用的功能。

除了 Java Collections Framework 之外，最着名的集合框架示例是 C ++标准模板库（STL）和 Smalltalk 的集合层次结构。从历史上看，集合框架相当复杂，这使得它们具有陡峭的学习曲线的声誉。我们相信 Java Collections Framework 打破了这一传统，因为您将在本章中自学。

## Java Collections Framework 的优点

Java Collections Framework 提供以下好处：

*   **减少编程工作量：**通过提供有用的数据结构和算法，Collections Framework 可以让您专注于程序的重要部分，而不是使其工作所需的低级“管道”。通过促进不相关 API 之间的互操作性，Java Collections Framework 使您无需编写适配器对象或转换代码来连接 API。
*   **提高程序速度和质量：**此集合框架提供有用数据结构和算法的高性能，高质量实现。每个接口的各种实现是可互换的，因此可以通过切换集合实现来轻松调整程序。因为您没有编写自己的数据结构的苦差事，所以您将有更多的时间用于改进程序的质量和性能。
*   **允许不相关的 API 之间的互操作性：**集合接口是 API 通过其来回传递集合的本地语言。如果我的网络管理 API 提供了一组节点名称，并且您的 GUI 工具包需要一组列标题，那么我们的 API 将无缝地互操作，即使它们是独立编写的。
*   **减少学习和使用新 API 的工作量：**许多 API 自然地在输入上收集集合并将它们作为输出提供。过去，每个这样的 API 都有一个专门用于操作其集合的小型子 API。这些 ad hoc 集合子 API 之间几乎没有一致性，因此您必须从头开始学习每一个，并且在使用它们时很容易出错。随着标准集合接口的出现，问题就消失了。
*   **减少设计新 API 的工作量：**这是前一个优势的另一面。设计人员和实现人员每次创建依赖于集合的 API 时都不必重新发明轮子;相反，他们可以使用标准的集合接口。
*   **促进软件重用：**符合标准集合接口的新数据结构本质上是可重用的。对于实现这些接口的对象进行操作的新算法也是如此。