文章目錄
- 常用的容器
-
- Collection
-
- List
- Queue
- Set
- Map
常用的容器

- Java 容器分為兩大陣營: Collection 和 Map
Collection
- Collection 主要是單個元素的集合, 由 List, Queue, Set三個接口差別不同的特征, 然後由下面的具體實作類來實作相應的功能
List
- List 的特點是所有的元素是可以重複的
- List 主要分為 ArrayList 和 LinkedList,前者底層是使用數組實作的 List,後者是使用連結清單實作的 List
- Vector是一個已經被棄用的類,它是線程同步的。使用同步的壞處就是會在一個記錄上加鎖,防止多個程式通路同一條資料導緻資料不同步。這樣會導緻通路速度變慢
- Stack是滿足 “後進先出” 規則的容器,注意LinkedList可以實作所有的棧功能。
Queue
- 隊列是一個滿足 “先進先出” 的資料結構
- LinkedList 提供了方法支援隊列操作,并且實作了 Queue 接口
- 是以 LinkedList 是隊列的一種實作,可以通過 LinkedList 向上轉型為 Queue
- PriorityQueue是優先級隊列
Set
- set 代表的是數學上的集合的意思,是以 set 中的元素不可以重複
- 是以 set 中查找是最為重要的操作,而對于查找來說最常用的就是 HashSet
- HastSet 底層是使用散列函數,在查詢的方面有優化
- TreeSet 底層使用的是紅黑樹
Map
- Map 是使用鍵值對存儲的一種結構,是以在處理列如單詞統計等方面是殺手锏
- Map 的鍵值對都可以為 null
- Map 可以多元擴充。例如一個人擁有多個寵物,可以這樣定義:Map< Person, List< pet>>
處理鍵值對的集合:
- public Set keySet():傳回這個 Map 的所有鍵的集合,因為 Map 中鍵是唯一的,是以傳回使用一個 Set
- public Collection values():傳回這個 Map 的所有值的集合,因為值可能重複,是以傳回一個 Collection
- public Set entrySet():傳回一個實作 Map.Entry 接口對象集合,使用這個方法可以周遊每一條記錄
for(Map.Entry<String, String> file : films.entrySet()){
String title = file.getKey();
String videoUrl = file.getValue();
}
- HashMap 更适合查找、删除、插入
- TreeMap 更适合周遊