java集合框架 接口篇

java集合接口

核心的接口是被封裝為不同類型的集合,如下圖所示。這些接口允許集合去操作獨立的細節和實現。核心的集合接口是java集合框架的基礎。正如你在下圖看到的,這些核心接口來自于一個層次關系。

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

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

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

public interface Collection<E>...

<E>語法告訴你這個接口是通用的。當你聲明一個集合實例的時候,你應該指定這個集合中包含對象的類型。指定類型的好處是,在編譯時,允許編譯器去校驗你put到集合的對象是否時正確的,減少了運行時錯誤。

當你知道如何使用這些接口的時候,你將會明白更多的有關java集合框架的東西。

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

  • **Collection ** 集合接口層次的最頂層接口。集合表示為一組對象。Collection接口是所有集合實現的最小單位。封裝了所有集合的最通用性的操作。一些類型的集合允許重復元素,而其他不允許。有些是有序的,有些是無須的。java平臺不提供任何該接口的直接實現,而是提供更具體的子接口的實現,比如SetList.具體請看The Collection Interface.
  • Set 不能包含重復元素的集合,是對數學上的集合進行的抽象。請參考The Set Interface
  • **list ** 一個排序的集合。有時被稱為序列。可以包含重復的對象,可以通過索引定位到元素。請參考The List Interface
  • Queue 用于在處理之前保存多個元素的集合。除了基本的集合操作之外,隊列提供額外的插入,提取和檢查操作。隊列通常但不一定以FIFO(先進先出)方式對元素排序。比如,優先級隊列,其根據提供的比較器或元素的自然排序來排序元素。無論使用什么排序,隊列的頭部都是通過調用remove或poll來刪除的元素。在FIFO隊列中,所有新元素都插入到隊列的尾部。其他類型的隊列可以使用不同的布置規則。每個隊列實現必須指定其排序屬性。另請參閱隊列接口部分。請參照The Queue Interface
  • Deque 用于在處理之前保存多個元素的集合。除了基本的收集操作,Deque還提供額外的插入,提取和檢查操作。 Deques可以用作FIFO(先進先出)和LIFO(后進先出)。在deque中,所有新元素可以在兩端插入,檢索和刪除。另請參閱Deque接口部分。請參照The Deque interface
  • Map 將鍵映射到值的對象。map中不能包含重復的鍵;每個鍵可以映射到至多一個值。如果你已經使用Hashtable,你已經熟悉了Map的基礎知識。另見地圖界面部分。請參照The Map Interface

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

  • SortedSet 一個有序的Set集合,默認排序為升序。提供了一些操作去利用這個順序。用于自然排序的集合,例如單詞列表和成員資格卷。另請參見SortedSet接口部分。

  • SortedMap 一個有序的Map集合,默認排序為升序。這是一個類似SortedSet的map。用于自然排序的鍵值對組合,比如詞典或者是電話薄。

    想了解有序集合接口維護內部元素順序的原因,請參考Object Ordering


Collection

Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)。一些 Collection允許相同的元素而另一些不行。一些能排序而另一些不行。Java SDK不提供直接繼承自Collection的類,Java SDK提供的類都是繼承自Collection的“子接口”如List和Set。
  所有實現Collection接口的類都必須提供兩個標準的構造函數:無參數的構造函數用于創建一個空的Collection,有一個 Collection參數的構造函數用于創建一個新的Collection,這個新的Collection與傳入的Collection有相同的元素。后 一個構造函數允許用戶復制一個Collection。
  如何遍歷Collection中的每一個元素?不論Collection的實際類型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,使用該迭代子即可逐一訪問Collection中每一個元素。典型的用法如下:

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

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

List

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

  • 查找 查找某一個特定的對象將會返回這個對象的下標。 比如 indexOflastIndexOf

  • 迭代 繼承了Iterator ,利用列表的順序屬性;

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

    java平臺包括了兩個list接口的實現,一個是ArrayList ,一般情況下它的性能是最好的,另一個實現是LinkedList,在某些情況下它的性能是好的。

  • 它的一些操作

    • remove,總是remove第一次出現的某個特定的元素。
    • addaddAll,總是在集合的尾部追加這些新的元素。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,565評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,115評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,577評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,514評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,234評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,621評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,641評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,822評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,380評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,128評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,319評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,879評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,548評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,970評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,229評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,048評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,285評論 2 376

推薦閱讀更多精彩內容

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