java集合框架 接口篇

java集合接口

核心的接口是被封裝為不同類型的集合,如下圖所示。這些接口允許集合去操作獨立的細(xì)節(jié)和實現(xiàn)爪幻。核心的集合接口是java集合框架的基礎(chǔ)。正如你在下圖看到的须误,這些核心接口來自于一個層次關(guān)系挨稿。

核心集合接口層次圖
核心集合接口層次圖

Set是一個特定類型的集合,SortedSet是一個特定類型的Set京痢。從上圖可以看到奶甘,有兩顆分開的樹,[map][3]不是一個真正的Collection祭椰。

所有的核心集合接口都是通用的臭家,例如疲陕,下面是[Collection][1]的接口聲明:

public interface Collection<E>...

<E>語法告訴你這個接口是通用的。當(dāng)你聲明一個集合實例的時候钉赁,你應(yīng)該指定這個集合中包含對象的類型蹄殃。指定類型的好處是,在編譯時你踩,允許編譯器去校驗?zāi)?code>put到集合的對象是否時正確的诅岩,減少了運行時錯誤。

當(dāng)你知道如何使用這些接口的時候姓蜂,你將會明白更多的有關(guān)java集合框架的東西按厘。

下面的列表描述了核心的集合接口

  • **Collection ** 集合接口層次的最頂層接口。集合表示為一組對象钱慢。Collection接口是所有集合實現(xiàn)的最小單位。封裝了所有集合的最通用性的操作卿堂。一些類型的集合允許重復(fù)元素束莫,而其他不允許。有些是有序的草描,有些是無須的览绿。java平臺不提供任何該接口的直接實現(xiàn),而是提供更具體的子接口的實現(xiàn)穗慕,比如SetList.具體請看The Collection Interface.
  • Set 不能包含重復(fù)元素的集合饿敲,是對數(shù)學(xué)上的集合進(jìn)行的抽象。請參考The Set Interface
  • **list ** 一個排序的集合逛绵。有時被稱為序列怀各。可以包含重復(fù)的對象术浪,可以通過索引定位到元素瓢对。請參考The List Interface
  • Queue 用于在處理之前保存多個元素的集合。除了基本的集合操作之外胰苏,隊列提供額外的插入硕蛹,提取和檢查操作。隊列通常但不一定以FIFO(先進(jìn)先出)方式對元素排序硕并。比如法焰,優(yōu)先級隊列,其根據(jù)提供的比較器或元素的自然排序來排序元素倔毙。無論使用什么排序埃仪,隊列的頭部都是通過調(diào)用remove或poll來刪除的元素。在FIFO隊列中普监,所有新元素都插入到隊列的尾部贵试。其他類型的隊列可以使用不同的布置規(guī)則琉兜。每個隊列實現(xiàn)必須指定其排序?qū)傩浴A碚垍㈤嗞犃薪涌诓糠直胁!U垍⒄?a target="_blank" rel="nofollow">The Queue Interface
  • Deque 用于在處理之前保存多個元素的集合豌蟋。除了基本的收集操作,Deque還提供額外的插入桑滩,提取和檢查操作梧疲。 Deques可以用作FIFO(先進(jìn)先出)和LIFO(后進(jìn)先出)。在deque中运准,所有新元素可以在兩端插入幌氮,檢索和刪除。另請參閱Deque接口部分胁澳。請參照The Deque interface
  • Map 將鍵映射到值的對象该互。map中不能包含重復(fù)的鍵;每個鍵可以映射到至多一個值。如果你已經(jīng)使用Hashtable韭畸,你已經(jīng)熟悉了Map的基礎(chǔ)知識宇智。另見地圖界面部分。請參照The Map Interface

最后兩個核心的集合接口是SetMap的排序版本

  • SortedSet 一個有序的Set集合胰丁,默認(rèn)排序為升序随橘。提供了一些操作去利用這個順序。用于自然排序的集合锦庸,例如單詞列表和成員資格卷机蔗。另請參見SortedSet接口部分。

  • SortedMap 一個有序的Map集合甘萧,默認(rèn)排序為升序萝嘁。這是一個類似SortedSet的map。用于自然排序的鍵值對組合幔嗦,比如詞典或者是電話薄酿愧。

    想了解有序集合接口維護(hù)內(nèi)部元素順序的原因,請參考Object Ordering


Collection

Collection是最基本的集合接口邀泉,一個Collection代表一組Object嬉挡,即Collection的元素(Elements)。一些 Collection允許相同的元素而另一些不行汇恤。一些能排序而另一些不行庞钢。Java SDK不提供直接繼承自Collection的類,Java SDK提供的類都是繼承自Collection的“子接口”如List和Set因谎。
  所有實現(xiàn)Collection接口的類都必須提供兩個標(biāo)準(zhǔn)的構(gòu)造函數(shù):無參數(shù)的構(gòu)造函數(shù)用于創(chuàng)建一個空的Collection基括,有一個 Collection參數(shù)的構(gòu)造函數(shù)用于創(chuàng)建一個新的Collection,這個新的Collection與傳入的Collection有相同的元素财岔。后 一個構(gòu)造函數(shù)允許用戶復(fù)制一個Collection风皿。
  如何遍歷Collection中的每一個元素河爹?不論Collection的實際類型如何,它都支持一個iterator()的方法桐款,該方法返回一個迭代子咸这,使用該迭代子即可逐一訪問Collection中每一個元素。典型的用法如下:

Iterator it = collection.iterator(); // 獲得一個迭代器
    while(it.hasNext()) {
      Object obj = it.next(); // 得到下一個元素
    }

由Collection接口派生的兩個接口是List和Set魔眨。

List

  • 位置訪問 基于他們在列表中的索引下標(biāo)操作元素媳维。包括get set add addAll remove等方法;

  • 查找 查找某一個特定的對象將會返回這個對象的下標(biāo)遏暴。 比如 indexOflastIndexOf侄刽;

  • 迭代 繼承了Iterator ,利用列表的順序?qū)傩裕?/p>

  • range-view 使用subList方法可以對某個范圍的列表進(jìn)行操作

    java平臺包括了兩個list接口的實現(xiàn)朋凉,一個是ArrayList ,一般情況下它的性能是最好的州丹,另一個實現(xiàn)是LinkedList,在某些情況下它的性能是好的侥啤。

  • 它的一些操作

    • remove当叭,總是remove第一次出現(xiàn)的某個特定的元素。
    • addaddAll,總是在集合的尾部追加這些新的元素盖灸。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市磺芭,隨后出現(xiàn)的幾起案子赁炎,更是在濱河造成了極大的恐慌,老刑警劉巖钾腺,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件徙垫,死亡現(xiàn)場離奇詭異,居然都是意外死亡放棒,警方通過查閱死者的電腦和手機(jī)姻报,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來间螟,“玉大人吴旋,你說我怎么就攤上這事∠崞疲” “怎么了荣瑟?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長摩泪。 經(jīng)常有香客問我笆焰,道長,這世上最難降的妖魔是什么见坑? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任嚷掠,我火速辦了婚禮捏检,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘不皆。我一直安慰自己贯城,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布粟焊。 她就那樣靜靜地躺著冤狡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪项棠。 梳的紋絲不亂的頭發(fā)上悲雳,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機(jī)與錄音香追,去河邊找鬼合瓢。 笑死,一個胖子當(dāng)著我的面吹牛透典,可吹牛的內(nèi)容都是我干的晴楔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼峭咒,長吁一口氣:“原來是場噩夢啊……” “哼税弃!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凑队,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤则果,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后漩氨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體西壮,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年叫惊,在試婚紗的時候發(fā)現(xiàn)自己被綠了款青。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡霍狰,死狀恐怖抡草,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蚓耽,我是刑警寧澤渠牲,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站步悠,受9級特大地震影響签杈,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一答姥、第九天 我趴在偏房一處隱蔽的房頂上張望铣除。 院中可真熱鬧,春花似錦鹦付、人聲如沸尚粘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽郎嫁。三九已至,卻和暖如春祈噪,著一層夾襖步出監(jiān)牢的瞬間泽铛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工辑鲤, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留盔腔,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓月褥,卻偏偏與公主長得像弛随,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子宁赤,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 概述 Java集合框架由Java類庫的一系列接口舀透、抽象類以及具體實現(xiàn)類組成。我們這里所說的集合就是把一組對象組織到...
    absfree閱讀 1,246評論 0 10
  • 集合框架體系概述 為什么出現(xiàn)集合類?方便多個對象的操作,就對對象進(jìn)行存儲,集合就是存儲對象最常用的一種方法. 數(shù)組...
    acc8226閱讀 768評論 0 1
  • 1.Java集合框架是什么决左?說出一些集合框架的優(yōu)點盐杂? 每種編程語言中都有集合,最初的Java版本包含幾種集合類:V...
    Oneisall_81a5閱讀 898評論 0 11
  • 星星會哭泣 會流出很多很多的淚 眼淚越來越多 倒?jié)M了銀河 撒落在長滿青苔的池塘 爬滿了泥里半枯的野花花瓣 掉落在那...
    崔詩晗閱讀 269評論 0 0
  • 陸城南是舒文的初戀厉斟,十年的陪伴不是作假挚躯,他們是彼此的親人,只是在陸城南為了音樂夢想背叛舒文那一刻起擦秽,曾經(jīng)至死不...
    Y_sun閱讀 711評論 1 1