集合類概述
首先Collection接口是層次結構中的根接口。構成Collection的單位稱爲元素。Collection接口通常不能直接使用,但該接口提供了添加元素,刪除元素,管理數據的方法。(俗稱增刪改查),由於List接口與Set接口都繼承了Collection接口,因此這些方法對List和set集合是通用的。
常用集合類的繼承關係圖
Collection接口的常用方法
List集合
List集合包括List接口以及List接口中的所有實現類。List集合中的元素允許重複,各元素的順序就是插入對象的順序。類似JAVA數組,可通過索引((index)即元素在集合中的位置)來訪問集合中的元素。
List接口繼承了Collection接口,因此包含Collection中的所有方法,此外List接口還定義了以下非常重用的方法。
① get(int index): 獲取指定索引位置的元素。
② set(int index , Object obj): 將集合中指定索引位置的對象修改爲指定對象。
List集合的實現類
List 接口的常用實現類有ArrayList 和LinkedList。
ArrayList實現了可變的數組,允許保存所有的元素,包括null,並可以根據索引位置對集合進行快速的隨機訪問;缺點是指定索引位置插入對象或刪除對象的速度較慢。
LinkedList類採用鏈表保存對象。這種結構的優點是便於向集合中插入和刪除對象,需要向集合中插入 刪除對象時,使用LinkedList類實現的List集合效率較高;但對於隨機訪問集合中的對象,使用LinkedList實現List集合的效率較高。
使用List集合時通常聲明爲List類型,可通過不同的實現類來實例化集合。
分別通過ArrayList,LinkedList實例化List集合,代碼如下:
List <E> list = new ArrayList<>();
List<E> list1 = new LinkedList<>();
Set集合
Set集合中的對象不按照特定的方式排序,只是簡單的把對象放入集合中,但set集合中不能包含重複對象。Set集合由Set接口和Set實現類組成。Set接口繼承了Collection接口,因此包含Collection接口的所有方法
Set接口常用的實現類有HashSet類和TreeSet類
HashSet類實現Set接口,由哈希表(HashMap的實例)支持。它不保證Set的迭代順序,特別是它不保證改順序恆久不變。此類允許使用null元素。
TreeSet類不僅實現了Set接口,還實現了java.util.SortedSet接口,因此,TreeSet類實習那的Set集合在遍歷集合時按照自然順序遞增排序,也可以按照指定比較器遞增排序,
即可通過比較器TreeSet類實現的Set集合中的對象進行排序。TreeSet新增的方法如下
TreeSet類增加的方法
Map集合
Map集合沒有繼承Collection接口,其提供的是key到value的映射。Map中不能包含相同的key,每個key只能對應相應value.。key還決定了存儲對象在映射中的存儲位置,但不是由key對象決定的,而是通過一種"散列技術"進行處理,產生一散列碼的整數值,散列碼通常用作一個偏移量,該偏移量對應分配給映射的內存區域的其實位置,從而確定存儲對象在映射的存儲位置。Map集合包括Map接口的所有實現類。
Map接口
Map接口提供了將key映射到值的對象。一個映射不能包含重複的key,每個key做多隻能映射到一個值。Map接口中同樣提供了集合的常用方法,除此之外還包括下表所示。