集合接口
核心集合接口封裝了不同類型的集合,如下圖所示,這些接口允許獨(dú)立于其表示的細(xì)節(jié)來操縱集合,核心集合接口是Java集合框架的基礎(chǔ),如下圖所示,核心集合接口形成層次結(jié)構(gòu)。
Set是一種特殊的Collection,SortedSet是一種特殊的Set,依此類推,另請注意,層次結(jié)構(gòu)由兩個不同的樹組成 — Map不是真正的Collection。
請注意,所有核心集合接口都是泛型,例如,這是Collection接口的聲明。
public interface Collection...
當(dāng)你了解如何使用這些接口時(shí),你將了解有關(guān)Java集合框架的大部分知識,本章討論有效使用接口的通用準(zhǔn)則,包括何時(shí)使用哪個接口,你還將學(xué)習(xí)每個接口的編程語法,以幫助你充分利用它。
為了保持核心集合接口的數(shù)量可管理,Java平臺不為每個集合類型的每個變體提供多帶帶的接口(此類變體可能包括不可變、固定大小和僅附加),相反,每個接口中的修改操作被指定為可選的 — 給定的實(shí)現(xiàn)可以選擇不支持所有操作。如果調(diào)用了不受支持的操作,則集合將拋出UnsupportedOperationException,實(shí)現(xiàn)負(fù)責(zé)記錄它們支持哪些可選操作,所有Java平臺的通用實(shí)現(xiàn)都支持所有可選操作。
以下列表描述了核心集合接口:
Collection — 集合層次結(jié)構(gòu)的根,集合表示一組稱為其元素的對象,Collection接口是所有集合實(shí)現(xiàn)的最小公分母,用于傳遞集合并在需要最大通用性時(shí)對其進(jìn)行操作。某些類型的集合允許重復(fù)元素,而其他集合則不允許,有些是有序的,有些則是無序的。Java平臺不提供此接口的任何直接實(shí)現(xiàn),但提供了更具體的子接口的實(shí)現(xiàn),例如Set和List,另請參閱Collection接口部分。
Set — 一個不能包含重復(fù)元素的集合,該接口模擬數(shù)學(xué)集抽象,用于表示集合,例如包含撲克牌的牌,構(gòu)成學(xué)生日程表的課程或在機(jī)器上運(yùn)行的進(jìn)程,另請參見Set接口部分。
List — 有序集合(有時(shí)稱為序列),List可以包含重復(fù)元素,List的用戶通??梢跃_控制列表中每個元素的插入位置,并可以通過整數(shù)索引(位置)訪問元素,如果你使用過Vector,那么你就熟悉List的一般風(fēng)格,另請參閱List接口部分。
Queue — 用于在處理之前保存多個元素的集合,除了基本的Collection操作外,Queue還提供追加插入、提取和檢查操作。
Queue通常(但不一定)以FIFO(先進(jìn)先出)方式對元素進(jìn)行排序,除了優(yōu)先級隊(duì)列之外,優(yōu)先級隊(duì)列根據(jù)提供的比較器或元素的自然順序?qū)υ剡M(jìn)行排序。無論使用什么順序,隊(duì)列的頭部是通過調(diào)用remove或poll移除元素,在FIFO隊(duì)列中,所有新元素都插入隊(duì)列的尾部,其他類型的隊(duì)列可能使用不同的放置規(guī)則,每個Queue實(shí)現(xiàn)都必須指定其排序?qū)傩裕碚垍㈤?b>Queue接口部分。
Deque — 用于在處理之前保存多個元素的集合,除了基本的Collection操作外,Deque還提供追加插入、提取和檢查操作。
Deque可用作FIFO(先進(jìn)先出)和LIFO(后進(jìn)先出),在雙端隊(duì)列中,可以在兩端插入、檢索和刪除所有新元素,另請參閱Deque接口部分。
Map — 將鍵映射到值的對象,Map不能包含重復(fù)的鍵,每個鍵最多可以映射一個值,如果你使用過Hashtable,那么你已經(jīng)熟悉了Map的基礎(chǔ)知識,另請參閱Map接口部分。
最后兩個核心集合接口只是Set和Map的排序版本:
SortedSet — 一個按升序維護(hù)其元素的Set,提供了幾個額外的操作以利用排序,排序集用于自然排序的集合,例如單詞列表和成員名冊,另請參閱SortedSet接口部分。
SortedMap — 按升序鍵順序維護(hù)映射的Map,這是SortedSet的Map模擬,排序映射用于自然排序的鍵/值對集合,例如字典和電話目錄,另請參閱SortedMap接口部分。
要了解排序接口如何維護(hù)其元素的順序,請參閱對象排序部分。
接口摘要核心集合接口是Java集合框架的基礎(chǔ)。
Java集合框架層次結(jié)構(gòu)由兩個不同的接口樹組成:
第一個樹以Collection接口開始,它提供了所有集合使用的基本功能,例如add和remove方法,它的子接口 — Set、List和Queue — 提供更專業(yè)的集合。
Set接口不允許重復(fù)元素,這對于存儲諸如一副紙牌或?qū)W生記錄之類的集合非常有用,Set接口有一個子接口SortedSet,它提供了集合中元素的排序。
List接口提供有序集合,適用于需要精確控制每個元素插入位置的情況,你可以按照其確切位置從List中檢索元素。
Queue接口支持追加插入、提取和檢查操作,Queue中的元素通常以FIFO為基礎(chǔ)進(jìn)行排序。
Deque接口可以在兩端插入、刪除和檢查操作,Deque中的元素可用于LIFO和FIFO。
第二個樹以Ma??p接口開始,它映射鍵和值類似于Hashtable。
Map的子接口SortedMap按升序或按Comparator指定的順序維護(hù)其鍵值對。
這些接口允許獨(dú)立于其表示的細(xì)節(jié)來操縱集合。
上一篇:集合介紹 下一篇:Collection接口文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73100.html
集合介紹 本節(jié)介紹Java集合框架,在這里,你將了解集合是什么以及它們?nèi)绾问鼓愕墓ぷ鞲p松、程序更好,你將了解構(gòu)成Java集合框架的核心元素 — 接口、實(shí)現(xiàn)、聚合操作和算法。 集合 — 有時(shí)稱為容器 — 只是一個將多個元素組合到一個單元中的對象,集合用于存儲、檢索、操作和傳遞聚合數(shù)據(jù)。通常,它們代表形成自然組的數(shù)據(jù)項(xiàng),例如撲克牌(卡片集合)、郵件文件夾(信件集合)或電話目錄(名稱到電話號碼的映射)...
Java? 教程 Java教程是為JDK 8編寫的,本頁面中描述的示例和實(shí)踐沒有利用在后續(xù)版本中引入的改進(jìn)。 Java教程是希望使用Java編程語言創(chuàng)建應(yīng)用程序的程序員的實(shí)用指南,其中包括數(shù)百個完整的工作示例和數(shù)十個課程,相關(guān)課程組被組織成教程。 覆蓋基礎(chǔ)知識的路徑 這些教程以書籍的形式提供,如Java教程,第六版,前往Amazon.com購買。 入門 介紹Java技術(shù)和安裝Java開發(fā)軟件并使用...
Set接口 Set是一個不能包含重復(fù)元素的Collection,它模擬了數(shù)學(xué)集抽象,Set接口僅包含從Collection繼承的方法,并添加禁止重復(fù)元素的限制,Set還為equals和hashCode操作的行為添加了一個更強(qiáng)的契約,允許Set實(shí)例有意義地進(jìn)行比較,即使它們的實(shí)現(xiàn)類型不同,如果兩個Set實(shí)例包含相同的元素,則它們是相等的。 Java平臺包含三個通用的Set實(shí)現(xiàn):HashSet、Tre...
Collection接口 Collection表示一組稱為其元素的對象,Collection接口用于傳遞需要最大通用性的對象集合,例如,按照慣例,所有通用集合實(shí)現(xiàn)都有一個帶有Collection參數(shù)的構(gòu)造函數(shù),此構(gòu)造函數(shù)(稱為轉(zhuǎn)換構(gòu)造函數(shù))初始化新集合以包含指定集合中的所有元素,無論給定集合的子接口或?qū)崿F(xiàn)類型如何,換句話說,它允許你轉(zhuǎn)換集合的類型。 例如,假設(shè)你有一個Collection c,它可...
高級并發(fā)對象 到目前為止,本課程重點(diǎn)關(guān)注從一開始就是Java平臺一部分的低級別API,這些API適用于非?;A(chǔ)的任務(wù),但更高級的任務(wù)需要更高級別的構(gòu)建塊,對于充分利用當(dāng)今多處理器和多核系統(tǒng)的大規(guī)模并發(fā)應(yīng)用程序尤其如此。 在本節(jié)中,我們將介紹Java平臺5.0版中引入的一些高級并發(fā)功能,大多數(shù)這些功能都在新的java.util.concurrent包中實(shí)現(xiàn),Java集合框架中還有新的并發(fā)數(shù)據(jù)結(jié)構(gòu)。 ...
閱讀 3558·2021-09-22 15:50
閱讀 3247·2019-08-30 15:54
閱讀 2765·2019-08-30 14:12
閱讀 3069·2019-08-30 11:22
閱讀 2093·2019-08-29 11:16
閱讀 3588·2019-08-26 13:43
閱讀 1200·2019-08-23 18:33
閱讀 931·2019-08-23 18:32