兩個月之前準備軟考時,簡單的從理論上總結了最常用的數據結構和算法,比如:線性表,鏈表,圖。在進行java開發時,jdk爲我們提供了一系列相應的類來實現基本的數據結構。jdk所提供的容器API位於java.util包內。本文主要是通過簡單的介紹Collection集合,向讀者簡單闡述各個類的基本定義以及其作用,爲後面的學習做一下鋪墊。
首先,我們先看一下Collection集合的基本結構:
1、Collection接口
Collection是最基本集合接口,它定義了一組允許重複的對象。Collection接口派生了兩個子接口Set和List,分別定義了兩種不同的存儲方式,如下:
2、 Set接口
Set接口繼承於Collection接口,它沒有提供額外的方法,但實現了Set接口的集合類中的元素是無序且不可重複。
特徵:無序且不可重複。
3、 List接口
List接口同樣也繼承於Collection接口,但是與Set接口恰恰相反,List接口的集合類中的元素是對象有序且可重複。
特徵:有序且可重複。
兩個重要的實現類:ArrayList和LinkedList
1.ArrayList特點是有序可重複的
2.LinkedList是一個雙向鏈表結構的。
4、Map接口
Map也是接口,但沒有繼承Collection接口。該接口描述了從不重複的鍵到值的映射。Map接口用於維護鍵/值對(key/value pairs)。
特徵:它描述了從不重複的鍵到值的映射。
兩個重要的實現類:HashMap和TreeMap
1.HashMap,中文叫散列表,基於哈希表實現,特點就是鍵值對的映射關係。一個key對應一個Value。HashMap中元素的排列順序是不固定的。更加適合於對元素進行插入、刪除和定位。
2.TreeMap,基於紅黑書實現。TreeMap中的元素保持着某種固定的順序。更加適合於對元素的順序遍歷。
5、Iterator接口
Iterator接口,在C#裏有例外一種說法IEnumerator,他們都是集合訪問器,用於循環訪問集合中的對象。
所有實現了Collection接口的容器類都有iterator方法,用於返回一個實現了Iterator接口的對象。Iterator對象稱作迭代器,Iterator接口方法能以迭代方式逐個訪問集合中各個元素,並可以從Collection中除去適當的元素。
- <span style="font-size:10px;">Iterator it = collection.iterator(); // 獲得一個迭代子
- while(it.hasNext())
- {
- Object obj = it.next(); // 得到下一個元素
- } </span>
6、Comparable接口
Comparable可以用於比較的實現,實現了Comparable接口的類可以通過實現comparaTo方法從而確定該類對象的排序方式。
總結
Collection集合分別派生自Collection和Map接口,Collection有兩個常用子接口List和Set,分別表示有序可重複,無序不可重複的集合。而Map存儲的是key-value的映射。
上面的總結看上去很多,很繁瑣,其實你只要記得一點:collection是用於處理各種數據結構的,根據各種數據結構的特點理解,一切都會變簡單。
雖然此博客有點糙,也希望能幫助你對集合的理解有一點點作用(尤其是對組織中人)。下面的博文,我會更新一些有關線程的基礎知識,請繼續關注。