Java 集合 API 为 Java 开发者提供了一组类和接口,使得操作对象集合(例如列表、映射、栈等)变得更加容易。
与其自己编写集合类,Java 提供了这些即用型的集合类。本教程将更深入地介绍 Java 集合(有时也这样称呼),特别是 Java 8 及以后版本中可用的 Java 集合。
本教程的目的是让你对 Java 集合类有一个整体了解。因此,它不会描述 Java 集合类的每一个细节。但一旦你掌握了整体结构,之后阅读 JavaDoc 就会容易得多。
Java 集合的核心类与接口
Java 集合 API 的核心接口包括:
- Java Collection(集合)
- Java List(列表)
- Java Set(集合)
- Java SortedSet(有序集合)
- Java NavigableSet(可导航集合)
- Java Map(映射)
- Java SortedMap(有序映射)
- Java NavigableMap(可导航映射)
- Java Stack(栈)
- Java Queue(队列)
- Java Deque(双端队列)
- Java Iterator(迭代器)
- Java Iterable(可迭代)
上述大多数核心接口在各自的教程中有更详细的说明,以下各节将为你提供快速入门介绍。
Java 集合 API 还包含上述接口的一些实用实现类,以及其他一些工具类,例如:
Java Collection(集合接口)
Collection 接口表示对通用集合(如 List、Set、Stack、Queue 和 Deque)可执行的操作。例如,该接口提供了基于索引访问元素的方法。更多内容请参阅 Java Collection 接口教程。
Java List(列表接口)
List 接口表示一个有序的对象集合。“有序”是指你可以按照元素在列表中的顺序进行访问。详见 Java List 接口教程。
Java Set(集合接口)
Set 接口表示一个无序的对象集合。与 List 不同,Set 不保证你可以按特定顺序访问其中的元素。虽然某些 Set 实现会根据元素的自然顺序排序,但 Set 接口本身不提供这种保证。详见 Java Set 教程。
Java SortedSet(有序集合接口)
SortedSet 接口表示一个有序的对象集合,因此可以按排序后的顺序遍历其中的元素。详见 Java SortedSet 教程。
Java NavigableSet(可导航集合接口)
NavigableSet 是 SortedSet 的扩展,提供了更多用于轻松导航集合中元素的方法。详见 Java NavigableSet 教程。
Java Map(映射接口)
Map 接口表示键与值之间的映射关系。键和值都是对象。你可以将一个键值对插入到 Map 中,之后可以通过键来检索对应的值。也就是说,只需知道键,就可以从 Map 中取出值。详见 Java Map 教程。
Java SortedMap(有序映射接口)
SortedMap 是 Map 的扩展,表示一个键有序的映射。因此,你可以按排序顺序遍历 SortedMap 中的键,而不是像普通 Map 那样以某种“随机”顺序遍历。详见 Java SortedMap 教程。
Java NavigableMap(可导航映射接口)
NavigableMap 是 SortedMap 的扩展,提供了更多用于轻松导航键和条目的方法。详见 Java NavigableMap 教程。
Java Stack(栈类)
Stack 类代表经典的栈数据结构,支持将元素压入栈顶,并从栈顶弹出元素。详见 Java Stack 教程。
Java Queue(队列接口)
Queue 接口代表经典的队列数据结构,对象从一端入队,从另一端出队。这与栈的使用方式相反。详见 Java Queue 教程。
Java Deque(双端队列接口)
Deque(Double Ended Queue)接口代表一种双端队列,即可以从两端插入和删除元素的数据结构。也可以理解为“双端栈”。详见 Java Deque 教程。
Java Iterator(迭代器接口)
Iterator 接口表示一个能够遍历某种 Java 集合(如 List 或 Set)的组件。你可以从 Java 的 Set、List、Map 等中获取一个 Iterator 实例。
Java Iterable(可迭代接口)
Iterable 接口与 Iterator 接口职责非常相似。Iterable 接口允许 Java 集合使用 for-each 循环进行遍历。详见 Java Iterable 接口教程。
虽然 Iterable 接口严格来说不属于 Java 集合 API,但由于它经常与集合一起使用,因此本教程将其纳入。for-each 循环的用法详见我的 Java for 循环教程。
Java Collections 工具类
Java Collections 类 包含一系列实用方法,帮助你更高效地使用 Java 集合 API。
Java Properties(属性类)
Java Properties 类 是一种特殊的键值存储,类似于 Java Map,但专门用于存储字符串到字符串的键值对,并支持从属性文件中加载和保存配置。
Java 集合所在的包
大多数 Java 集合位于 java.util 包中。Java 还在 java.util.concurrent 包中提供了一组并发集合。本教程不涉及并发集合,相关内容请参阅我的 Java util concurrent 教程。
Java 集合概览
为了帮助你全面了解 Java 集合的类和接口,本教程的第一篇文章是 Java 集合概览。
Java 集合与泛型(Generics)
本教程的第五篇文章介绍了如何在 Java 集合中使用泛型。泛型在使用 Java 集合类时非常有用。详见 Java 泛型集合。
泛型本身的详细讲解请参考我的 Java 泛型教程。
Java 集合与 equals() 和 hashCode() 方法
Java 集合 API 中的许多核心组件都依赖于正确实现 hashCode() 和 equals() 方法。
Java hashCode 与 equals 方法教程 解释了这两个方法的工作原理,以及它们为何对 Java 集合的核心组件至关重要。