Java Collections 架構中包含了大量集合接口以及這些借口的實作類和操作它們的算法,主要提供了List(清單)、Set(集合)、Queue(隊列)、Stack(棧)和Map(映射表)
下面對于Set、Lis和Map三個接口進行介紹
Set表示數學意義上的集合概念,主要的特點是集合中的元素不能重複。有2個實作類,HashSet和TreeSet(實作了SortedSet,是以它的元素是有序的)
List稱為有序的Collection。可以儲存重複的對象,能夠對清單中每個元素的插入和删除位置進行精确的控制,LinkedList、ArrayList和Verctor都實作了List接口
Map提供一個從鍵映射到值的資料結構,用于儲存鍵值對,鍵唯一,值可以重複。它的實作:HashMap基于散清單實作的,LinkedHashMap采用清單來維護内部的順序,TreeMap基于紅黑樹的資料結構來實作。
下面講講LinkedList、ArrayList和Verctor的差別?
ArrayList和Verctor會在記憶體中開辟一塊連續的空間來存儲,因為資料存儲連續,是以支援用序号(下标)來通路元素,同時索引資料的速度比較快。但是在插入元素時,需要移動容器中的元素,是以對資料的插入操作執行比較慢。ArrayList不是線程安全的,而Verctor是線程安全的。
LinkedList是采用雙向清單實作的,非線程安全,插入效率高,因為對資料索引需要從頭開始周遊,通路效率則比較低。
下面講講Map實作類的差別?
HashMap是最常用的,根據鍵就能擷取值,通路速度快
HashMap和HashTable的差別?
HashMap是HashTable的輕量級實作,HashMap允許空(null)鍵值(最多隻允許一條記錄的鍵值為null),而HashTable不允許。
HashMap把HashTable的contains方法改成了containsValue和containsKey
HashTable繼承自Dictionary,而HashMap是Java1.2引進的Map接口的一個實作
HashTable使用Enumetation,HashMap使用Iterator
HashTable中hash數組預設大小11,HashMap中hash數組預設大小16
HashTable線程安全的,HashMap中hash線程不安全的
TreeMap實作了SortMap接口,能夠把它儲存的記錄根據鍵排序,LinkedHashMap是HashMap的一個子類,如果需要輸出的順序和輸入的相同可以使用,WeekHashMap與HashMap類似,不過它的key采用"弱引用",隻要key不被外部引用,就可以被垃圾回收期回收。