Java集合框架

Java中提供了丰富的容器类用于存储数据,这些容器类可分为两大类:Collection和Map,Collection用于保存单个元素,而Map则以键值对的形式进行存储,就像一个小型数据库一样。Collection中又可分为List、Set、Queue三类,其中List是列表,Set是集合,Queue是队列。整个Java集合框架的结构图如下:

网上能找到的图都不是很全面,故我根据最新版的JDK 8文档绘制了此图。图中并没有包含所有的接口与类,仅仅只是最常用的部分,这些部分均位于java.util包中。图中蓝色的实现类就是我们实际可以直接使用的容器类了。

JDK帮助文档中还有一张各接口与存储形式的对照表,摘录如下:

Interface Hash Table Resizable Array Balanced Tree Linked List Hash Table + Linked List
Set HashSet - TreeSet - LinkedHashSet
List - ArrayList - LinkedList -
Deque - ArrayDeque - LinkedList -
Map HashMap - TreeMap - LinkedHashMap

上表中加粗显示的就是最常用的实现类,一般情况下选择这几个就可以了。

接下来将各接口最常用的一些方法整理总结一下。

Collection接口

所有的ListSetQueue均支持以下方法:

|Function Name|
|–|–|–|
|size()|isEmpty()|contains()|
|add()|remove()|iterator()|
|toArray()|clear()|forEach()|

Iterator接口

|Function Name|
|–|–|–|
|hasNext()|next()|remove()|

List接口

Collection接口的基础上添加了以下方法:

|Function Name|
|–|–|
|get()|set()|
|add(int,E)|remove(int)|
|indexOf()|lastIndexOf()|

ListIterator接口

Iterator接口的基础上添加了以下方法:

|Function Name|
|–|–|
|add()|set()|
|hasPrevious()|previous()|

Set接口

Set接口没有添加新方法,与Collection接口中的相同。

添加到Set中的类一般都要覆盖实现hashCode()equals()函数。

SortedSet接口

Set接口的基础上添加了以下方法:

|Function Name|
|–|–|–|
|subSet()|headSet()|tailSet()|
|first()|last()|

添加到SortedSet中的类需要实现Comparable接口。

Deque接口

Collection接口的基础上添加了以下方法:

|Function Name|
|–|–|
|addFirst()|addLast()|
|removeFirst()|removeLast()|
|getFirst()|getLast()|

Map接口

常用函数有:

|Function Name|
|–|–|–|
|put()|get()|remove()|
|size()|isEmpty()|
|containsKey()|containsValue()|
|keySet()|values()|

添加到Map中的Key类一般都要覆盖实现hashCode()equals()函数。

SortedMap接口

Map接口的基础上添加了以下方法:

|Function Name|
|–|–|–|
|subMap()|headMap()|tailMap()|
|firstKey()|lastKey()|

SortedMap是按照Key来进行排序的,要求Key需要实现Comparable接口。

Arrays类

用于支持数组操作,常用静态函数有:

|Function Name|
|–|–|–|
|asList()|binarySearch()|copyOf()|
|equals()|fill()|sort()|

Collections类

用于支持集合框架的通用算法,常用静态函数有:

|Function Name|
|–|–|–|
|sort()|binarySearch()|copy()|
|shuffle()|fill()|reverse()|


关于各种容器类的具体介绍与使用方法,可参考官方的Tutorial:Trail: Collections

以下几个链接也可供参考:

Java 集合框架
Java集合类: Set、List、Map、Queue使用场景梳理
Java集合类详解

文章目录
  1. 1. Collection接口
  2. 2. Iterator接口
  3. 3. List接口
  4. 4. ListIterator接口
  5. 5. Set接口
  6. 6. SortedSet接口
  7. 7. Deque接口
  8. 8. Map接口
  9. 9. SortedMap接口
  10. 10. Arrays类
  11. 11. Collections类