Java之Java集合框架

(本文爲博主JAVA課程學習總結)

一.集合框架介紹

集合框架:用來表示和操作集合的統一的架構。

集合類存放java.util包中。

較重要的幾個集合類與相關接口:Iterable(迭代器接口)、Collection(類集接口)、List(列表接口)、Set(數據集接口)、Queue(隊列)、Map(鍵-值對組合映射表)

層次結構圖(這張圖片很重要,箭頭指向父類):

源自海同網校


 

(一)Iterable接口

通過Iterable接口可以實現“foreach”語句(增強for循環),即:

 

Iterator:迭代器類,是Iterable接口中的方法,也作爲另一個接口存在。Iterable接口的Iterator方法是返回一個迭代器(即Iterator對象)。而Iterator接口中的方法實現依賴於迭代器的當前迭代位置。二者不同,具體可查看API文檔。

通過Iterator迭代器實現ArrayList的元素遍歷:

 

Listiterator:Iterator的子類,允許雙向遍歷集合並修改和刪除元素。

 

(二)Collection接口

Collection接口是層次結構中的根接口。

Collection接口定義的方法:int size()boolean isEmpty()boolean contains(Object o)……(具體可參照API說明文檔)

(三)ListSetMap接口

List接口:對Collection接口的擴展,有序且可重複

Set接口:對Collection接口的擴展,無序且不可重複

Map(映射)接口:存儲關鍵字-值對的對象(簡稱鍵值對)。當給定一個關鍵字時,可查詢得到它的值。這裏關鍵字和值都可以是對象

注意:Map不是Collection的子接口,故無法採用迭代器遍歷。

 

二.List容器

List容器中,有些類似於數組,可以直接通過元素在列表中的位置來訪問元素。

(一)ArrayList —— 動態數組

ArrayList常用方法:

E getint index) 返回列表中指定位置上的元素(EArrayList中的類型參數)

int indexOfObject o) 返回此列表中首次出現指定元素的索引,若不包含則返回-1

具體可查看API文檔。

優點:ArrayList查詢效率較高。且ArrayList的實現是不同步的,所以在單線程中效率較高。

缺點:插入、刪除效率低。

(二)LinkedList —— 鏈表

常用方法:

void addFirst(E e)     將指定元素插入此列表的開頭。

E removeFirst()      移除並返回此列表的第一個元素。

LinkedList繼承了DequeQueue的子類),故具有雙向隊列的一些特有性質。

優點:做插入、刪除效率較高。

缺點:查詢效率低。

三.Map容器

Map容器中的鍵(key)必須是唯一的,值(value)是可以重複的。

注:有些映射可以接收null鍵與null值,而有些不行。

支持映射的接口:MapMap.EntrySortedMap

常用方法:int size()、boolean isEmpty()、boolean containsKeyObject key)、boolean containsValueObject value)、V getObject key)、V putK key, V value)、Set<Map.Entry<K,V>>entrySet()(返回包含映射關係的Set視圖)……

具體可參照API說明文檔

(一)Map.Entry接口

Map.Entry接口類似於Iterator接口,表示的是鍵值對(映射項),它是Map接口的內部接口。

(二)HashMap

HashMap類是基於哈希表的Mao接口實現。(允許使用null鍵和null值)

注:HashMap不保證映射的順序。

構造方法與常用方法可參照API文檔。

HashtableHashMap的前身。

設計Hashode()方法時,最好讓不相等的對象生成不同的整數結果。(如果編程者對HashCode方法有特定要求,可進行重寫。)

四.Set容器

Set容器是一個不包含重複元素的Collection,最多包含一個null元素。Set容器無法保證元素順序。

(一)HashSet

HashSet使用哈希表進行存儲。

HashSet中的方法全部繼承自父類和接口。

HashSet實際上是HashMap的一個實例,HashSet的內部操作底層數據是HashMapkey

(二)TreeSet

TreeSet:通過使用樹來進行對Set中的對象進行升序存儲。(是TreeMap的一個實例,TreeSet的內部操作底層數據是TreeMapkey

優點:訪問和檢索速度很快,適用於存儲大量需要快速檢索的排序信息。

五.Collections

Collections類中包含了若干類集和映射的算法,也就是說Collections類是爲上述的幾種特殊的類集和映射服務的,我們可以通過調用Collections類來實現對數據的排序處理等。

常用方法:

public static int binarySearchList<T>  list, T key)  

使用二分搜索法搜索指定列表,以獲得指定對象。

public static void reverseList<> list

反轉指定列表中元素的順序。

public static void shuffleList<> list

打亂指定列表中元素的順序。

……(具體可查看API文檔)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章