Interfaces
的核心集合接口封装不同类型的集合,这在下面的图中所示的。这些接口允许独立于其表示的细节来操纵集合。核心集合接口是Java集合框架的基础。正如你可以看到 如下图所示,核心集合接口形成一个层次。
两棵接口树,一棵以Collection开头,包括Set,SortedSet,List和Queue,另一棵以Map开头,包括SortedMap。
注意:Deque是Queue的子接口,和Set,List,Queue不是同一级。
A Set是一种特殊的Collection,a SortedSet是一种特殊的Set,依此类推。还要注意,层次结构由两棵不同的树组成-a Map不是true Collection。
请注意,所有核心集合接口都是通用的。例如,这是Collection接口的声明。
公共接口Collection …
该语法告诉你的是,接口是通用的。声明Collection实例时,可以并且应该指定集合中包含的对象的类型。指定类型可以使编译器在编译时验证您放入集合中的对象类型是否正确,从而减少了运行时的错误。有关泛型类型的信息,请参阅 泛型(更新)课程。
当您了解如何使用这些接口时,您将了解有关Java Collections Framework的大部分知识。本章讨论有效使用接口的一般准则,包括何时使用哪个接口。您还将学习每种接口的编程习惯用法,以帮助您充分利用它。
为了使核心集合接口的数量易于管理,Java平台没有为每种集合类型的每个变体提供单独的接口。(这种变体可能包括不可变的,固定大小的和仅附加的。)相反,每个接口中的修改操作都指定为可选 -给定的实现可能选择不支持所有操作。如果调用了不受支持的操作,则集合将引发 UnsupportedOperationException。实现负责记录它们支持哪些可选操作。所有Java平台的通用实现都支持所有可选操作。
下表描述了核心收集接口:
Collection—集合层次结构的根。集合表示一组称为其元素的对象。该Collection接口是所有集合实现,用来传递周围集合和最大时,通用需要操纵它们的最小公分母。某些类型的集合允许重复的元素,而其他类型则不允许。一些是有序的,而其他则是无序的。Java平台不提供此接口的任何直接实现,但是提供更具体的子接口(例如Set和)的实现List。另请参见 “收集接口”部分。
Set
Set—不能包含重复元素的集合。该接口对数学集合的抽象进行建模,并用于表示集合,例如包含扑克手的纸牌,构成学生日程的课程或机器上运行的过程。另请参见 “设置接口”部分。
List
List—有序集合(有时称为sequence)。List可以包含重复元素。List通常,用户可以精确控制列表中每个元素的插入位置,并可以通过其整数索引(位置)访问元素。如果您曾经使用过Vector,您将熟悉的一般风格List。另请参见 “列表接口”部分。
Queue
Queue—用于在处理之前保存多个元素的集合。除了基本Collection操作外,a Queue还提供其他插入,提取和检查操作。
队列通常但不一定以FIFO(先进先出)的方式对元素进行排序。优先队列除外,它们根据提供的比较器或元素的自然顺序对元素进行排序。无论使用哪种顺序,队列的开头都是将通过调用remove或删除的元素poll。在FIFO队列中,所有新元素都插入队列的尾部。其他种类的队列可能使用不同的放置规则。每个Queue实现都必须指定其排序属性。另请参见 “队列接口”部分。
Deque
Deque—用于在处理之前保存多个元素的集合。除了基本Collection操作外,a Deque还提供其他插入,提取和检查操作。
双端队列既可以用作FIFO(先进先出)又可以用作LIFO(先进先出)。在双端队列中,可以在两端插入,检索和删除所有新元素。另请参见 双端队列接口部分。
Map
Map—将键映射到值的对象。一个Map不能包含重复键; 每个键最多可以映射到一个值。如果您曾经使用过Hashtable,则已经熟悉的基础知识Map。另请参见 “地图界面”部分。
最后两个核心集合接口只是分类的版本Set和Map:
SortedSet
SortedSet— Set保持其元素升序排列的。提供了一些其他操作以利用订购的优势。排序的集合用于自然排序的集合,例如单词列表和成员资格列表。另请参见 SortedSet接口部分。
SortedMap
SortedMap—一个Map以升序顺序维护其映射的。这是的Map类似物SortedSet。排序后的地图用于键/值对的自然排序集合,例如字典和电话簿。另请参见 SortedMap接口部分。
要了解排序的接口如何维护其元素的顺序,请参见“ 对象排序”部分。