JavaSE進(jìn)階

第11章 集合

11.1 數(shù)組與集合

11.1.1數(shù)組

  • 邏輯結(jié)構(gòu):線性的
  • 物理結(jié)構(gòu):順序的存儲(chǔ)結(jié)構(gòu)
  • 申請(qǐng)內(nèi)存:一次申請(qǐng)一大段連續(xù)的空間,一旦申請(qǐng)到了,內(nèi)存就固定了。
  • 存儲(chǔ)特點(diǎn):所有數(shù)據(jù)存儲(chǔ)在這個(gè)連續(xù)的空間中,數(shù)組中的每一個(gè)元素都是一個(gè)具體的數(shù)據(jù)(或?qū)ο螅?,所有?shù)據(jù)都緊密排布,不能有間隔。
  • 操作
    • 查詢:每一個(gè)元素都有一個(gè)數(shù)值下標(biāo),可以通過(guò)下標(biāo)瞬間定位到某個(gè)元素
    • 增加:
      • 從尾部增加:數(shù)組名[total++]=新元素
      • 從其他位置插入:先把index位置開(kāi)始所有元素后移,然后數(shù)組名[index]=新元素
    • 刪除:先把index后面的元素前移,然后數(shù)組名[total--]=null
    • 改:直接數(shù)組名[index]=新元素
  • 優(yōu)缺點(diǎn)
    • 優(yōu)點(diǎn):查詢效率高
    • 缺點(diǎn):添加/刪除效率低,因?yàn)槎忌婕暗揭苿?dòng)元素;無(wú)法直接獲取有效元素的個(gè)數(shù),需要total來(lái)輔助
  • 使用范圍:查詢操作遠(yuǎn)多于插入和刪除操作的場(chǎng)景

11.1.2集合

為了可以滿足用戶數(shù)據(jù)更多種的邏輯關(guān)系,而設(shè)計(jì)的一系列的不同于數(shù)組的可變的聚合的抽象數(shù)據(jù)類型。

總的特點(diǎn):

1、只能存對(duì)象

2、容量可以自動(dòng)調(diào)節(jié)

3、可以直接獲取有效元素的個(gè)數(shù):size()

 

1、集合的幾個(gè)常用接口

2、詳細(xì)描述

  • Collection 層次結(jié)構(gòu)中的根接口。Collection 表示一組對(duì)象,這些對(duì)象也稱為 collection 的元素。一些 collection 允許有重復(fù)的元素,而另一些則不允許。一些 collection 是有序的,而另一些則是無(wú)序的。JDK 不提供此接口的任何直接實(shí)現(xiàn):它提供更具體的子接口(如 Set 和 List)實(shí)現(xiàn)。此接口通常用來(lái)傳遞 collection,并在需要最大普遍性的地方操作這些 collection。
    • List:有序的 collection(也稱為序列)。此接口的用戶可以對(duì)列表中每個(gè)元素的插入位置進(jìn)行精確地控制。用戶可以根據(jù)元素的整數(shù)索引(在列表中的位置)訪問(wèn)元素,并搜索列表中的元素。
    • Set:一個(gè)不包含重復(fù)元素的 collection。更確切地講,set 不包含滿足equals(e2) 的元素對(duì) e1 和 e2,并且最多包含一個(gè) null 元素。正如其名稱所暗示的,此接口模仿了數(shù)學(xué)上的 set 抽象。
      • SortedSet進(jìn)一步提供關(guān)于元素的總體排序 的 Set。這些元素使用其自然順序進(jìn)行排序,或者根據(jù)通常在創(chuàng)建有序 set 時(shí)提供的 Comparator進(jìn)行排序。該 set 的迭代器將按元素升序遍歷 set。提供了一些附加的操作來(lái)利用這種排序。(此接口是 SortedMap 的 set 對(duì)應(yīng)接口)。
    • Map:將鍵映射到值的對(duì)象。一個(gè)映射不能包含重復(fù)的鍵;每個(gè)鍵最多只能映射到一個(gè)值。 Map 接口提供三種collection 視圖,允許以鍵集、值集或鍵-值映射關(guān)系集的形式查看某個(gè)映射的內(nèi)容。映射順序 定義為迭代器在映射的 collection 視圖上返回其元素的順序。某些映射實(shí)現(xiàn)可明確保證其順序,如 TreeMap 類;另一些映射實(shí)現(xiàn)則不保證順序,如 HashMap 類。
      • SortedMap進(jìn)一步提供關(guān)于鍵的總體排序 的 Map。該映射是根據(jù)其鍵的自然順序進(jìn)行排序的,或者根據(jù)通常在創(chuàng)建有序映射時(shí)提供的 Comparator 進(jìn)行排序。對(duì)有序映射的 collection 視圖(由 entrySet、keySet 和 values 方法返回)進(jìn)行迭代時(shí),此順序就會(huì)反映出來(lái)。要采用此排序方式,還需要提供一些其他操作(此接口是 SortedSet 的對(duì)應(yīng)映射)。

 

3、概況總結(jié)

  • Collection接口:定義了存取一組對(duì)象的方法,其子接口Set和List分別定義了存儲(chǔ)方式
    • Set:中的數(shù)據(jù)對(duì)象沒(méi)有順序且不可以重復(fù)
    • List:中的數(shù)據(jù)對(duì)象有順序且可以重復(fù)

Map接口定義了存儲(chǔ)“鍵(key)-值(value)映射對(duì)”的方法