课程:接口

原文: https://docs.oracle.com/javase/tutorial/collections/interfaces/index.html

核心集合接口封装了不同类型的集合,如下图所示。这些接口允许独立于其表示的细节来操纵集合。核心集合接口是 Java 集合框架的基础。正如您在中看到的下图,核心集合接口形成层次结构。

Two interface trees, one starting with Collection and including Set, SortedSet, List, and Queue, and the other starting with Map and including SortedMap.

核心集合接口。

Set是一种特殊的CollectionSortedSet是一种特殊的Set,依此类推。还要注意,层次结构由两个不同的树组成 - Map不是真的Collection

请注意,所有核心集合接口都是通用的。例如,这是Collection接口的声明。

  1. public interface Collection<E>...

<E>语法告诉您接口是通用的。当您声明Collection实例时,您可以并且应该指定集合中包含的对象类型。指定类型允许编译器验证(在编译时)您放入集合的对象类型是否正确,从而减少运行时的错误。有关泛型类型的信息,请参阅泛型(更新)课程。

当您了解如何使用这些接口时,您将了解有关 Java Collections Framework 的大部分知识。本章讨论有效使用接口的一般准则,包括何时使用哪个接口。您还将学习每个接口的编程习惯用语,以帮助您充分利用它。

为了保持核心集合接口的数量可管理,Java 平台不为每个集合类型的每个变体提供单独的接口。 (这些变体可能包括不可变,固定大小和仅附加。)而是,每个接口中的修改操作被指定为*可选 _ - 给定的实现可以选择不支持所有操作。如果调用了不支持的操作,则集合将抛出 UnsupportedOperationException 。实现负责记录它们支持哪些可选操作。所有 Java 平台的通用实现都支持所有可选操作。

以下列表描述了核心集合接口:

  • Collection - 集合层次结构的根。集合表示一组称为元素的对象。 Collection接口是所有集合实现的最小公分母,用于传递集合并在需要最大通用性时对其进行操作。某些类型的集合允许重复元素,而其他集合则不允许。有些是订购的,有些则是无序的。 Java 平台不提供此接口的任何直接实现,但提供更具体的子接口的实现,例如SetList。另见collection接口部分。
  • Set - 不能包含重复元素的集合。该接口对数学集抽象进行建模,并用于表示集合,例如包含扑克牌的牌,构成学生日程的课程或在机器上运行的过程。另请参见设置接口部分。
  • List - 有序集合(有时称为序列)。 List可以包含重复元素。 List的用户通常精确控制列表中每个元素的插入位置,并且可以通过整数索引(位置)访问元素。如果你使用过Vector,你就会熟悉List的一般风味。另见列表接口部分。
  • Queue — a collection used to hold multiple elements prior to processing. Besides basic Collection operations, a Queue provides additional insertion, extraction, and inspection operations.

    队列通常(但不一定)以 FIFO(先进先出)方式对元素进行排序。除了优先级队列之外,优先级队列根据提供的比较器或元素的自然顺序对元素进行排序。无论使用什么顺序,队列的头部是通过调用removepoll来移除的元素。在 FIFO 队列中,所有新元素都插入队列的尾部。其他类型的队列可能使用不同的放置规则。每个Queue实现都必须指定其排序属性。另请参见队列接口部分。

  • Deque — a collection used to hold multiple elements prior to processing. Besides basic Collection operations, a Deque provides additional insertion, extraction, and inspection operations.

    Deques 可用作 FIFO(先进先出)和 LIFO(后进先出)。在双端队列中,可以在两端插入,检索和删除所有新元素。另见 Deque 接口部分。

  • Map - 将键映射到值的对象。 Map不能包含重复键;每个键最多可以映射一个值。如果您使用过Hashtable,那么您已经熟悉了Map的基础知识。另见映射接口部分。

最后两个核心集合接口只是SetMap的排序版本:

  • SortedSet - 一个Set,按升序维护其元素。提供了几个额外的操作以利用订购。排序集用于自然排序的集合,例如单词列表和成员资格卷。另见 SortedSet 接口部分。
  • SortedMap - 一个Map,按升序键维持其映射。这是SortedSetMap类似物。排序映射用于自然排序的键/值对集合,例如字典和电话目录。另见 SortedMap 接口部分。

要了解排序接口如何维护其元素的顺序,请参见对象排序部分。