中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java集合框架由什么組成的

發布時間:2021-12-16 10:02:06 來源:億速云 閱讀:170 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“Java集合框架由什么組成的”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Java集合框架由什么組成的”這篇文章吧。

第一部分  集合框架介紹

Java平臺提供了一個全新的集合框架。“集合框架”主要由一組用來操作對象的接口組成。不同接口描述一組不同數據類型。

Java集合框架由什么組成的2003-11-30926010.bmp" align=absMiddle border=0>

ASPectratio="t" v:ext="edit">

Java 2集合框架圖

  • 集合接口:6個接口(短虛線表示),表示不同集合類型,是集合框架的基礎。

  • 抽象類:5個抽象類(長虛線表示),對集合接口的部分實現。可擴展為自定義集合類。

  • 實現類:8個實現類(實線表示),對接口的具體實現。

在很大程度上,一旦您理解了接口,您就理解了框架。雖然您總要創建接口特定的實現,但訪問實際集合的方法應該限制在接口方法的使用上;因此,允許您更改基本的數據結構而不必改變其它代碼。

·  Collection 接口是一組允許重復的對象。

·  Set 接口繼承 Collection,但不允許重復,使用自己內部的一個排列機制。

·  List 接口繼承 Collection,允許重復,以元素安插的次序來放置元素,不會重新排列。

·  Map接口是一組成對的鍵-值對象,即所持有的是key-value pairsMap中不能有重復的key。擁有自己的內部排列機制。

·  容器中的元素類型都為object。從容器取得元素時,必須把它轉換成原來的類型。

Java集合框架由什么組成的

Java 2簡化集合框架圖

第二部分  集合接口

1.Collection 接口

用于表示任何對象或元素組。想要盡可能以常規方式處理一組元素時,就使用這一接口。

Java集合框架由什么組成的

(1) 單元素添加、刪除操作:

boolean add(Object o):將對象添加給集合

boolean remove(Object o): 如果集合中有與o相匹配的對象則刪除對象o

(2) 查詢操作:

int size() :返回當前集合中元素的數量

boolean isEmpty() :判斷集合中是否有任何元素

boolean contains(Object o) :查找集合中是否含有對象o

Iterator iterator() :返回一個迭代器,用來訪問集合中的各個元素

(3) 組操作 :作用于元素組或整個集合

boolean containsAll(Collection c): 查找集合中是否含有集合c 中所有元素

boolean addAll(Collection c) : 將集合c 中所有元素添加給該集合

void clear(): 刪除集合中所有元素

void removeAll(Collection c) : 從集合中刪除集合c 中的所有元素

void retainAll(Collection c) : 從集合中刪除集合c 中不包含的元素

(4) Collection轉換為Object數組 :

Object[] toArray() :返回一個內含集合所有元素的array

Object[] toArray(Object[] a) :返回一個內含集合所有元素的array運行期返回的array和參數a的型別相同,需要轉換為正確型別。

此外,您還可以把集合轉換成其它任何其它的對象數組。但是,您不能直接把集合轉換成基本數據類型的數組,因為集合必須持有對象。

斜體接口方法是可選的。因為一個接口實現必須實現所有接口方法,調用程序就需要一種途徑來知道一個可選的方法是不是不受支持。如果調用一種可選方法時,一個 UnsupportedOperationException 被拋出,則操作失敗,因為方法不受支持。此異常類繼承 RuntimeException 類,避免了將所有集合操作放入 try-catch 塊。』

Collection不提供get()方法。如果要遍歷Collectin中的元素,就必須用Iterator。

1.1.AbstractCollection 抽象類

AbstractCollection 類提供具體“集合框架”類的基本功能。雖然您可以自行實現 Collection 接口的所有方法,但是,除了iterator()size()方法在恰當的子類中實現以外,其它所有方法都由 AbstractCollection 類來提供實現。如果子類不覆蓋某些方法,可選的如add()之類的方法將拋出異常。

1.2.Iterator 接口

Collection 接口的iterator()方法返回一個 IteratorIterator接口方法能以迭代方式逐個訪問集合中各個元素,并安全的從Collection 中除去適當的元素。

Java集合框架由什么組成的

(1) boolean hasNext(): 判斷是否存在另一個可訪問的元素

Object next(): 返回要訪問的下一個元素。如果到達集合結尾,則拋出NoSuchElementException異常。

(2) void  remove(): 刪除上次訪問返回的對象。本方法必須緊跟在一個元素的訪問后執行。如果上次訪問后集合已被修改,方法將拋出IllegalStateException

『Iterator中刪除操作對底層Collection也有影響。』

迭代器是 故障快速修復fail-fast的。這意味著,當另一個線程修改底層集合的時候,如果您正在用 Iterator 遍歷集合,那么,Iterator就會拋出 ConcurrentModificationException (另一種 RuntimeException異常)異常并立刻失敗。

2.List接口

List 接口繼承了 Collection 接口以定義一個允許重復項的有序集合。該接口不但能夠對列表的一部分進行處理,還添加了面向位置的操作。

Java集合框架由什么組成的

(1)  面向位置的操作包括插入某個元素或 Collection 的功能,還包括獲取、除去或更改元素的功能。在 List 中搜索元素可以從列表的頭部或尾部開始,如果找到元素,還將報告元素所在的位置 :

void add(int index, Object element): 在指定位置index上添加元素element

boolean addAll(int index, Collection c): 將集合c的所有元素添加到指定位置index

Object get(int index): 返回List中指定位置的元素

int indexOf(Object o): 返回第一個出現元素o的位置,否則返回-1

int lastIndexOf(Object o) :返回最后一個出現元素o的位置,否則返回-1

Object remove(int index) :刪除指定位置上的元素

Object set(int index, Object element) :用元素element取代位置index上的元素,并且返回舊的元素

(2) List 接口不但以位置序列迭代的遍歷整個列表,還能處理集合的子集:

ListIterator listIterator() : 返回一個列表迭代器,用來訪問列表中的元素

ListIterator listIterator(int index) : 返回一個列表迭代器,用來從指定位置index開始訪問列表中的元素

List subList(int fromIndex, int toIndex) :返回從指定位置fromIndex(包含)到toIndex(不包含)范圍中各個元素的列表視圖

『對子列表的更改(如 add()remove()set() 調用)對底層 List 也有影響。』

2..ListIterator接口

ListIterator 接口繼承 Iterator 接口以支持添加或更改底層集合中的元素,還支持雙向訪問。ListIterator沒有當前位置,光標位于調用previousnext方法返回的值之間。一個長度為n的列表,有n+1個有效索引值:

Java集合框架由什么組成的

Java集合框架由什么組成的

(1) void add(Object o): 將對象o添加到當前位置的前面

void set(Object o): 用對象o替代nextprevious方法訪問的上一個元素。如果上次調用后列表結構被修改了,那么將拋出IllegalStateException異常。

(2)  boolean hasPrevious(): 判斷向后迭代時是否有元素可訪問

Object previous():返回上一個對象

int nextIndex(): 返回下次調用next方法時將返回的元素的索引

int previousIndex(): 返回下次調用previous方法時將返回的元素的索引

『正常情況下,不用ListIterator改變某次遍歷集合元素的方向 — 向前或者向后。雖然在技術上可以實現,但previous() 后立刻調用next(),返回的是同一個元素。把調用 next()和previous()的順序顛倒一下,結果相同。』

『我們還需要稍微再解釋一下 add() 操作。添加一個元素會導致新元素立刻被添加到隱式光標的前面。因此,添加元素后調用 previous() 會返回新元素,而調用 next() 則不起作用,返回添加操作之前的下一個元素。』undefined

以上是“Java集合框架由什么組成的”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

沙洋县| 砚山县| 福鼎市| 和田县| 莎车县| 视频| 高青县| 霍林郭勒市| 松桃| 尉氏县| 根河市| 井冈山市| 科技| 扎兰屯市| 福清市| 赫章县| 乌苏市| 临泉县| 池州市| 凤台县| 泉州市| 鹤峰县| 武汉市| 金乡县| 红河县| 汉寿县| 巴南区| 修水县| 扶余县| 中西区| 周口市| 阿尔山市| 蓬溪县| 三门县| 阜新| 靖西县| 宁晋县| 潜江市| 迁西县| 弋阳县| 大关县|