核心集合接口封装了不一样类型的集合,以下图所示,这些接口容许独立于其表示的细节来操纵集合,核心集合接口是Java集合框架的基础,以下图所示,核心集合接口造成层次结构。html
Set
是一种特殊的Collection
,SortedSet
是一种特殊的Set
,依此类推,另请注意,层次结构由两个不一样的树组成 — Map
不是真正的Collection
。java
请注意,全部核心集合接口都是泛型,例如,这是Collection
接口的声明。编程
public interface Collection<E>...
<E>
语法告诉你该接口是泛型,声明Collection
实例时,你能够而且应该指定集合中包含的对象类型,指定类型容许编译器验证(在编译时)你放入集合的对象类型是否正确,从而减小运行时的错误,有关泛型类型的信息,请参阅泛型课程。segmentfault
当你了解如何使用这些接口时,你将了解有关Java集合框架的大部分知识,本章讨论有效使用接口的通用准则,包括什么时候使用哪一个接口,你还将学习每一个接口的编程语法,以帮助你充分利用它。api
为了保持核心集合接口的数量可管理,Java平台不为每一个集合类型的每一个变体提供单独的接口(此类变体可能包括不可变、固定大小和仅附加),相反,每一个接口中的修改操做被指定为可选的 — 给定的实现能够选择不支持全部操做。若是调用了不受支持的操做,则集合将抛出UnsupportedOperationException,实现负责记录它们支持哪些可选操做,全部Java平台的通用实现都支持全部可选操做。oracle
如下列表描述了核心集合接口:框架
Collection
— 集合层次结构的根,集合表示一组称为其元素的对象,Collection
接口是全部集合实现的最小公分母,用于传递集合并在须要最大通用性时对其进行操做。某些类型的集合容许重复元素,而其余集合则不容许,有些是有序的,有些则是无序的。Java平台不提供此接口的任何直接实现,但提供了更具体的子接口的实现,例如Set
和List
,另请参阅Collection接口部分。Set
— 一个不能包含重复元素的集合,该接口模拟数学集抽象,用于表示集合,例如包含扑克牌的牌,构成学生日程表的课程或在机器上运行的进程,另请参见Set
接口部分。List
— 有序集合(有时称为序列),List
能够包含重复元素,List
的用户一般能够精确控制列表中每一个元素的插入位置,并能够经过整数索引(位置)访问元素,若是你使用过Vector
,那么你就熟悉List
的通常风格,另请参阅List
接口部分。Queue
— 用于在处理以前保存多个元素的集合,除了基本的Collection
操做外,Queue
还提供追加插入、提取和检查操做。Queue
一般(但不必定)以FIFO(先进先出)方式对元素进行排序,除了优先级队列以外,优先级队列根据提供的比较器或元素的天然顺序对元素进行排序。不管使用什么顺序,队列的头部是经过调用remove
或poll
移除元素,在FIFO队列中,全部新元素都插入队列的尾部,其余类型的队列可能使用不一样的放置规则,每一个Queue
实现都必须指定其排序属性,另请参阅Queue
接口部分。学习
Deque
— 用于在处理以前保存多个元素的集合,除了基本的Collection
操做外,Deque
还提供追加插入、提取和检查操做。Deque
可用做FIFO(先进先出)和LIFO(后进先出),在双端队列中,能够在两端插入、检索和删除全部新元素,另请参阅Deque
接口部分。spa
Map
— 将键映射到值的对象,Map
不能包含重复的键,每一个键最多能够映射一个值,若是你使用过Hashtable
,那么你已经熟悉了Map
的基础知识,另请参阅Map
接口部分。最后两个核心集合接口只是Set
和Map
的排序版本:code
SortedSet
— 一个按升序维护其元素的Set
,提供了几个额外的操做以利用排序,排序集用于天然排序的集合,例如单词列表和成员名册,另请参阅SortedSet
接口部分。SortedMap
— 按升序键顺序维护映射的Map
,这是SortedSet
的Map
模拟,排序映射用于天然排序的键/值对集合,例如字典和电话目录,另请参阅SortedMap
接口部分。要了解排序接口如何维护其元素的顺序,请参阅对象排序部分。
核心集合接口是Java集合框架的基础。
Java集合框架层次结构由两个不一样的接口树组成:
Collection
接口开始,它提供了全部集合使用的基本功能,例如add
和remove
方法,它的子接口 — Set
、List
和Queue
— 提供更专业的集合。Set
接口不容许重复元素,这对于存储诸如一副纸牌或学生记录之类的集合很是有用,Set
接口有一个子接口SortedSet
,它提供了集合中元素的排序。List
接口提供有序集合,适用于须要精确控制每一个元素插入位置的状况,你能够按照其确切位置从List
中检索元素。Queue
接口支持追加插入、提取和检查操做,Queue
中的元素一般以FIFO为基础进行排序。Deque
接口能够在两端插入、删除和检查操做,Deque
中的元素可用于LIFO和FIFO。Map
接口开始,它映射键和值相似于Hashtable
。Map
的子接口SortedMap
按升序或按Comparator
指定的顺序维护其键值对。这些接口容许独立于其表示的细节来操纵集合。