JavaSE進階
第11章 集合
11.1 數組與集合
11.1.1數組
- 邏輯結構:線性的
- 物理結構:順序的存儲結構
- 申請內存:一次申請一大段連續的空間,一旦申請到了,內存就固定了。
- 存儲特點:所有數據存儲在這個連續的空間中,數組中的每一個元素都是一個具體的數據(或對象),所有數據都緊密排布,不能有間隔。
- 操作
- 查詢:每一個元素都有一個數值下標,可以通過下標瞬間定位到某個元素
- 增加:
- 從尾部增加:數組名[total++]=新元素
- 從其他位置插入:先把index位置開始所有元素后移,然后數組名[index]=新元素
- 刪除:先把index后面的元素前移,然后數組名[total--]=null
- 改:直接數組名[index]=新元素
- 優缺點
- 優點:查詢效率高
- 缺點:添加/刪除效率低,因為都涉及到移動元素;無法直接獲取有效元素的個數,需要total來輔助
- 使用范圍:查詢操作遠多于插入和刪除操作的場景
11.1.2集合
為了可以滿足用戶數據更多種的邏輯關系,而設計的一系列的不同于數組的可變的聚合的抽象數據類型。
總的特點:
1、只能存對象
2、容量可以自動調節
3、可以直接獲取有效元素的個數:size()
1、集合的幾個常用接口
2、詳細描述
- Collection 層次結構中的根接口。Collection 表示一組對象,這些對象也稱為 collection 的元素。一些 collection 允許有重復的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無序的。JDK 不提供此接口的任何直接實現:它提供更具體的子接口(如 Set 和 List)實現。此接口通常用來傳遞 collection,并在需要最大普遍性的地方操作這些 collection。
- List:有序的 collection(也稱為序列)。此接口的用戶可以對列表中每個元素的插入位置進行精確地控制。用戶可以根據元素的整數索引(在列表中的位置)訪問元素,并搜索列表中的元素。
- Set:一個不包含重復元素的 collection。更確切地講,set 不包含滿足equals(e2) 的元素對 e1 和 e2,并且最多包含一個 null 元素。正如其名稱所暗示的,此接口模仿了數學上的 set 抽象。
- SortedSet進一步提供關于元素的總體排序 的 Set。這些元素使用其自然順序進行排序,或者根據通常在創建有序 set 時提供的 Comparator進行排序。該 set 的迭代器將按元素升序遍歷 set。提供了一些附加的操作來利用這種排序。(此接口是 SortedMap 的 set 對應接口)。
- Map:將鍵映射到值的對象。一個映射不能包含重復的鍵;每個鍵最多只能映射到一個值。 Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關系集的形式查看某個映射的內容。映射順序 定義為迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實現可明確保證其順序,如 TreeMap 類;另一些映射實現則不保證順序,如 HashMap 類。
- SortedMap進一步提供關于鍵的總體排序 的 Map。該映射是根據其鍵的自然順序進行排序的,或者根據通常在創建有序映射時提供的 Comparator 進行排序。對有序映射的 collection 視圖(由 entrySet、keySet 和 values 方法返回)進行迭代時,此順序就會反映出來。要采用此排序方式,還需要提供一些其他操作(此接口是 SortedSet 的對應映射)。
3、概況總結
- Collection接口:定義了存取一組對象的方法,其子接口Set和List分別定義了存儲方式
- Set:中的數據對象沒有順序且不可以重復
- List:中的數據對象有順序且可以重復
Map接口定義了存儲“鍵(key)-值(value)映射對”的方法