在前面的教程中,我们已经通过实时示例介绍了 Java 集合框架的常见的类型,现在是时候作个总结了
整个集合框架的层次结构由四个核心接口组成,它们分别是Collection, List, Set, Map;以及两个名为 SortedSet 和 SortedMap 的专用接口进行排序。
集合框架的所有接口和类都位于 java.util 包中。Java 集合层次结构的示意图如下图所示。

e➝ 扩展,I➝ 实现
Extends:Extends 是一个关键字,用于处理两个类和两个接口之间的继承。
Implements:Implements 是用于处理类和接口之间继承的关键字。
集合框架的基本接口是Collection 接口,它是 API(应用程序编程接口)中所有集合的根接口。
它位于 java 中集合层次结构的顶部。它提供了在集合中添加和删除元素的基本操作。
Collection 接口扩展了Iterable 接口。可迭代接口只有一个称为 iterator() 的方法。迭代器方法的功能是返回迭代器对象。使用此迭代器对象,我们可以迭代集合的元素。
List, Queue, Set 这三个组件扩展自Collection 接口。Collection 接口并不继承自map 接口。
List 接口
此接口表示元素的集合,其元素按顺序排列。
List 维护元素的顺序意味着保留我们添加元素的顺序,以及我们在检索元素时将获得的相同顺序。
我们可以在任何位置将元素插入到List中。该List允许在 Java 中存储重复的元素。
ArrayList、vector 和 LinkedList 是实现List接口的三个具体子类。
Set 接口
此接口表示包含唯一元素的元素集合。即,它用于存储唯一元素的集合。
Set接口在存储元素和检索时不保持任何顺序,我们可能不会得到与放置元素相同的顺序。集合中的所有元素可以按任意顺序排列。
Set 不允许任何重复元素。 HashSet,LinkedHashSet,TreeSet 类实现 set 接口,sorted 接口扩展 set 接口。
可以使用Iterator进行迭代,但不能使用ListIterator进行迭代。
SortedSet 接口
此接口扩展了一个Set ,该集合的迭代器根据元素的自然顺序横向排列。
TreeSet实现sorted 接口。
Queue 接口
队列是一个有序的同质元素组,其中新元素添加在一端(后),元素从另一端(前)移除。就像在超市或任何商店排队一样。
此接口代表一种特殊类型的列表,其元素仅从头部删除。
LinkedList、Priority queue(优先级队列)、ArrayQueue、Priority Blocking Queue(优先级阻塞队列)和Linked Blocking Queue(链接阻塞队列)是实现队列接口的具体子类。
Deque 接口
deque(双端队列)是队列接口的子接口。
此接口已添加到 Java SE 6 的集合框架中。
Deque 接口扩展了queue 接口,并使用其方法实现 deque。Deque 接口的层次结构如下图所示。

它是元素的线性集合,可以从任何一端插入和删除元素。也就是说,它支持在实现它的类的对象两端插入和删除。
LinkedList 和 ArrayDeque 类实现了 Deque 接口。
Map 接口
Map 接口不被collection 接口继承。它表示一个对象,该对象以键/值对的形式存储和检索元素,它们在 Map 中的位置由键确定。
Map 接口的层次结构如下图所示。

Map 使用哈希技术来存储键值对。
它不允许存储重复的键,但允许重复的值。
HashMap,HashTable,LinkedHashMap,TreeMap类实现Map接口。
SortedMap接口
此接口表示一个 Map,其元素按其自然顺序存储。它扩展了 Map 接口,而该接口又由 TreeMap 类实现。
Collection接口总共包含 15 种用于操作集合中元素的方法。它们如下:
1. add():此方法用于在集合中添加或插入元素。add() 方法的一般语法如下:
add(Object element) : boolean如果成功地将元素添加到集合中,它将返回 true。否则返回 false,如元素已存在但集合不允许重复项时。
2. addAll():此方法将Collection中的元素添加到当前的Collection中。如果添加元素,则返回 true,否则返回 false。此方法的一般语法如下:
addAll(Collection c) : boolean3. clear():此方法清除或删除集合中的所有元素。此方法的一般形式如下:
clear() : void此方法不返回任何内容。
4. contains():它用于检查元素在集合中是否存在。也就是说,它用于搜索元素。contains方法的一般情况如下:
contains(Object element) : boolean如果元素存在,则此方法返回 true,否则为 false。
5. containsAll():此方法检查指定的元素集合是否存在。如果调用集合包含所有指定的元素,则返回 true,否则返回 false。一般语法如下:
containsAll(Collection c) : boolean6. equals():它检查与另一个对象的相等性。一般形式如下:
equals(Object element) : boolean7. hashCode():它返回集合的哈希代码编号。其返回类型为整数。此方法的一般形式为:
hashCode() : int8. isEmpty():如果集合为空,则返回 true。也就是说,如果集合不包含任何元素,则此方法返回 true。
isEmpty() : boolean9.iterator():它返回一个迭代器。一般形式如下:
iterator() : Iterator10. remove():它从集合中删除指定的元素。一般语法如下:
remove(Object element) : boolean如果删除了元素,则此方法返回 true。否则,它将返回 false。
11. removeAll():removeAll() 方法从集合中删除所有元素。如果删除所有元素,则返回 true,否则返回 false。
removeAll(Collection c) : boolean12. retainAll():此方法用于从集合中删除除指定集合之外的所有元素。如果删除所有元素,则返回 true,否则返回 false。
retainAll(Collection c) : boolean13. size():size() 方法返回集合中元素的总数。其返回类型为整数。一般语法如下:
size() : int14. toArray():它以数组的形式返回集合的元素。数组元素是集合元素的副本。
toArray() : Object[]15. Object[ ] toArray():返回一个数组,其中包含调用集合中存储的所有元素。数组元素是集合元素的副本。
toArray(Object array[]) : Object[]collections 类实现collection 接口。它们是在java.util包中定义的。一部分类提供了可以按原样使用的完整实现,
另一部分是抽象的,提供可用于创建具体集合的基本实现。下面简要概述了每个具体的集合类。
1. AbstractCollection:它实现了大部分的collection 接口。它是所有具体collection 类的超类。
2. AbstractList:它扩展了 AbstractCollection 并实现了大部分 List 接口。
3. AbstractQueue:它扩展了AbstractCollection 并实现了queue 接口。
4. AbstractSequentialList:它扩展了AbstractList 并使用顺序来访问元素。
5. AbstractSet:扩展 AbstractCollection 并实现大部分 set 接口。
6. ArrayList:它通过扩展AbstractList来实现一个动态数组。
7. EnumSet:扩展AbstractSet 以用于枚举元素。
8. HashSet:扩展AbstractSet 以用于哈希表。
9. LinkedHashSet:扩展 HashSet 以允许插入顺序迭代。
10. LinkedList:通过扩展AbstractSequentialList来实现链表。
11. AbstractSequentialList:扩展AbstractQueue 以支持基于优先级的队列。
12. TreeSet:扩展AbstractSet 并实现 SortedSet 接口。