目錄
- 一、Java集合框架
- 1.1 什么是java集合框架
- 1.2 集合與數組
- 二、集合框架具體內容
- 2.1 整體框架
- 2.2 遺留類和遺留接口
- 1.3 集合框架設計特點
- 參考資料
一、Java集合框架
1.1 什么是java集合框架
Java集合框架(Java Collections Framework)是Java平臺提供的一組用于存儲、操作和處理對象集合的類和接口的集合。它提供了一套通用的接口和實現類,使得在處理對象集合時更加方便、高效和靈活。
java集合框架重要發展歷程主要如下:
- Java SE 2 首次引入 java 集合框架
- Java SE 5 引入泛型
- Java8中引入了 lambda 表達式以及接口中的默認方法
1.2 集合與數組
事實上,由于集合是一個對象,并且給定一個對象是可擴展的,您可以在JDK提供的大多數集合上添加您需要的任何操作。用數組做這件事是不可能的,因為數組不是Java中的對象。
集合能為您做什么,而數組不能?
-
集合跟蹤它包含的元素的數量
-
集合的容量不受限制:您可以在集合中添加(幾乎)任意數量的元素
-
集合可以控制您可以在其中存儲哪些元素。例如,您可以防止添加空元素
-
可以查詢集合是否存在給定元素
-
集合提供與另一個集合相交或合并等操作。
二、集合框架具體內容
ava的集合類定義在java.util
包中,支持泛型,主要提供了3種集合類,包括List
,Set
和Map
。
Java集合使用統一的Iterator
遍歷,盡量不要使用遺留接口。
java.util (Java SE 21 & JDK 21) (oracle.com)
Collections Framework Overview (Java SE 21 & JDK 21) (oracle.com)
2.1 整體框架
從集合框架圖可以看到,java 集合框架主要包括兩種類型的容器:
- 集合(Collection): 存儲一組元素,元素之間沒有任何關系
- 映射(map): 存儲鍵值映射
集合框架是一個用來代表和操縱集合的統一架構。所有的集合框架都包含如下內容:
- 接口:集合的抽象數據類型。例如 Collection、List、Set、Map 等。之所以定義多個接口,是為了以不同的方式操作集合對象
- 實現類:集合接口的具體實現。從本質上講,它們是可重復使用的數據結構,例如:ArrayList、LinkedList、HashSet、HashMap。
- 算法:實現集合接口的對象里的方法執行的一些有用的計算。例如搜索和排序,這些算法實現了多態,那是因為相同的方法可以在相似的接口上有著不同的實現。
Interface | Hash Table | Resizable Array | Balanced Tree | Linked List | Hash Table + Linked List |
---|---|---|---|---|---|
Set | HashSet | TreeSet | LinkedHashSet | ||
List | ArrayList | LinkedList | |||
Queue, Deque | ArrayDeque | LinkedList | |||
Map | HashMap | TreeMap | LinkedHashMap |
2.2 遺留類和遺留接口
需要注意的是,由于Java的集合設計非常久遠,中間經歷過大規模改進,我們要注意到有一小部分集合類是遺留類,不應該繼續使用:
Hashtable
:一種線程安全的Map
實現;在并發環境中,可以使用ConcurrentHashMap
作為替代品。Vector
:一種線程安全的List
實現;如果您在非并發環境中使用Vector
,那么您可以安全地將其替換為ArrayList
。Stack
:基于Vector
實現的LIFO
的棧。在非并發環境中應替換為ArrayDeque
。
還有一小部分接口是遺留接口,也不應該繼續使用:
Enumeration<E>
:已被Iterator<E>
取代。
1.3 集合框架設計特點
java集合設計特點:
-
實現接口和實現類相分離。
-
支持泛型。限制在一個集合中只能放入同一種數據類型的元素,例如:
List<String> list = new ArrayList<>(); // 只能放入String類型
-
java訪問集合統一通過迭代器來實現。這樣做的好處在于無需知道集合內部元素是按什么方式存儲的
參考資料
java.util (Java SE 21 & JDK 21) (oracle.com)
Java集合簡介 - 廖雪峰的官方網站 (liaoxuefeng.com)
The Collections Framework - Dev.java
Java 集合框架 | 菜鳥教程 (runoob.com)