問:什麼是 J**a Collections 框架?
答:j**a 集合框架包含大量的集合介面,以及這些介面的實現類和操作它們的演算法(例如,排序、查詢、反轉、替換、複製、獲取最小元素、獲取最大元素等)。具體來說,提供了 list、queue、set、stack、map 等資料結構來儲存鍵值對。列表、佇列、集和堆疊都是從集合 API 繼承的。
集合是整個集合框架的基礎,它儲存了一組物件,表示不同型別的集合,它的作用只是提供乙個基本的介面來維護一組物件。
下面介紹三個介面:set、list和map。
set 代表數學意義上的集合概念。其主要特點是:集合中的元素不能複製,因此存放在集合中的每個元素都必須定義 equals() 方法,以確保物件的唯一性。 該介面有兩個實現類:hashset 和 treeset。其中 TreeSet 實現 sortedset 介面,因此 treeset 容器中的元素是有序的。
列表也稱為有序集合。 它按照物件輸入的順序儲存物件因此,它可以應用於每個列表精確控制元素的插入和刪除。同時,它可以儲存重複物件。LinkedList、ArrayList 和 Vector 都實現了 List 介面。
對映提供從鍵對映到值的資料結構。 它用於儲存鍵值對,其中值可以重複,但鍵是唯一的,不能重複。在 J**A 類庫中有幾個實現此介面的類:HashMap、TreeMap、LinkedHashMap、WeakHashMap 和 IdentityHashMap。 雖然它們都實現了相同的介面,但執行效率並不完全相同。 具體來說,hashmap是基於hash表實現的,物件的hashcode可以用於快速查詢。 LinkedHashMap 使用列表來維護內部秩序。 樹狀圖是基於紅黑樹的資料結構實現的,內部元素根據需要進行排列。
集合的框架類圖如下圖所示: