java day 11

集合

  • 把具有相同性質(zhì)的一類東西,匯聚成一個整體,就可以稱為集合。
  • 集合包含的三部分:
    1.接口:即表示集合的抽象數(shù)據(jù)類型。接口提供了讓我們對集合中所表示的內(nèi)容進行單獨操作的可能。
    2.實現(xiàn):也就是集合框架中接口的具體實現(xiàn)。實際它們就是那些可復(fù)用的數(shù)據(jù)結(jié)構(gòu)。
    3.算法:在一個實現(xiàn)了某個集合框架中的接口的對象身上完成某種有用的計算的方法,例如查找、排序等。這些算法通常是多態(tài)的,因為相同的方法可以在同一個接口被多個類實現(xiàn)時有不同的表現(xiàn)。

  • 集合框架的優(yōu)點:
    1.減少編程工作。
    2.增加編程速度與質(zhì)量。
    3.減少了學(xué)習(xí)和應(yīng)用新的API的工作。
    4.減少了新的API的工作。
    5.促進了軟件的應(yīng)用。

  • API接口


    ES62{O8.png

    1.collection接口是所有集合接口的根接口,它聲明的抽象方法是通用的集合操作。
    2.Set是不能包含重復(fù)元素的集合。Set集合的元素位置往往并不確定,因而不能通過位置存取元素。
    3.List的元素按照一定的次序排列,被稱為序列。list集合的元素可以重復(fù)。
    4.Queue集合用于表示隊列,經(jīng)常按照某種原則進行元素從插入和訪問。
    5.Deque 該接口的集合類支持從隊列兩端進行元素插入和刪除。
    5.Map管理一批鍵值對(key-value pairs)。

  • Iterator(迭代器)
      迭代器是一種設(shè)計模式,它是一個對象,它可以遍歷并選擇序列中的對象,而開發(fā)人員不需要了解該序列的底層結(jié)構(gòu)。迭代器通常被稱為“輕量級”對象,因為創(chuàng)建它的代價小。
      Java中的Iterator功能比較簡單,并且只能單向移動:
      (1) 使用方法iterator()要求容器返回一個Iterator。第一次調(diào)用Iterator的next()方法時,它返回序列的第一個元素。注意:iterator()方法是java.lang.Iterable接口,被Collection繼承。
      (2) 使用next()獲得序列中的下一個元素。
      (3) 使用hasNext()檢查序列中是否還有元素。
      (4) 使用remove()將迭代器新返回的元素刪除。
      Iterator是Java迭代器最簡單的實現(xiàn),為List設(shè)計的ListIterator具有更多的功能,它可以從兩個方向遍歷List,也可以從List中插入和刪除元素。

  • ArrayList
    ArrayList 是一個數(shù)組隊列,相當于 動態(tài)數(shù)組。與Java中的數(shù)組相比,它的容量能動態(tài)增長。它繼承于AbstractList,實現(xiàn)了List, RandomAccess, Cloneable, java.io.Serializable這些接口。
    ArrayList 繼承了AbstractList,實現(xiàn)了List。它是一個數(shù)組隊列,提供了相關(guān)的添加、刪除、修改、遍歷等功能。
    ArrayList 實現(xiàn)了RandmoAccess接口,即提供了隨機訪問功能。RandmoAccess是java中用來被List實現(xiàn),為List提供快速訪問功能的。在ArrayList中,我們即可以通過元素的序號快速獲取元素對象;這就是快速隨機訪問。稍后,我們會比較List的“快速隨機訪問”和“通過Iterator迭代器訪問”的效率。
    ArrayList 實現(xiàn)了Cloneable接口,即覆蓋了函數(shù)clone(),能被克隆。
    ArrayList 實現(xiàn)java.io.Serializable接口,這意味著ArrayList支持序列化,能通過序列化去傳輸。和Vector不同,ArrayList中的操作不是線程安全的。所以,建議在單線程中才使用ArrayList,而在多線程中可以選擇Vector或者CopyOnWriteArrayList。

  • LinkedList與ArrayList的區(qū)別
    1.ArrayList是實現(xiàn)了基于動態(tài)數(shù)組的數(shù)據(jù)結(jié)構(gòu),LinkedList基于鏈表的數(shù)據(jù)結(jié)構(gòu)。
    2.ArrayList對隨機訪問性能很好,但進行大量插入,刪除操作,性能很差, 因為操作之后后續(xù)元素需要移動。
    3.LinkedList功能與ArrayList,Vector相同,內(nèi)部是依賴雙鏈表實現(xiàn)的, 因此有很好的插入和刪除性能,只需要改變引用指向,但隨機訪問元素的性能很差 。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,728評論 18 399
  • Java源碼研究之容器(1) 如何看源碼 很多時候我們看源碼, 看完了以后經(jīng)常也沒啥收獲, 有些地方看得懂, 有些...
    駱駝騎士閱讀 1,070評論 0 22
  • 1.Java集合框架是什么?說出一些集合框架的優(yōu)點? 每種編程語言中都有集合,最初的Java版本包含幾種集合類:V...
    Oneisall_81a5閱讀 962評論 0 10
  • 制定目標在今天已經(jīng)越來越重要。不僅公司強調(diào)目標,個人也是如此。比如,F(xiàn)acebook的CEO扎克伯格每年都會公布自...
    親子教練Will閱讀 501評論 0 0
  • 漂浮的島,洞穴,魚腸小路,不可思議地城市,奇怪的種族,狗叫的羊,行走的尸體,撕咬尸體的貓,沒有眼睛被鋼絲纏繞的動物
    半張狂閱讀 152評論 0 1

友情鏈接更多精彩內(nèi)容