大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java學習 Java基礎學習:Java集合學習之list集合

Java基礎學習:Java集合學習之list集合

更新時間:2020-04-30 10:48:42 來源:動力節(jié)點 瀏覽2971次

    今天我們來詳細聊一下各個集合類的適用場景和需要注意的地方。今天主要介紹一下List,如有錯誤之處:

    List

    List是java集合中最簡單,也是最常用的一種集合。List存儲的是一種有序、不重復的數(shù)據(jù)。比如產(chǎn)品列表、商品列表等等。ArrayList和LinkedList是比較常用的List集合類。今天主要是聊一聊這兩種List的具體實現(xiàn)以及適用場景。

    ArrayList

    ArrayList常用增刪改查操作如下:

Java基礎學習:Java集合學習之list集合

    ArrayList的底層實現(xiàn)是一個數(shù)組,默認的構造函數(shù)newArrayList<>(),數(shù)組的容量為10。當調(diào)用add()或者add(index,value)方法的時候。首先要判斷數(shù)組的是否超過容量,不然需要擴容長度。擴容的邏輯是在原有的長度上,增加1/2,也即原來如果是10的話,第一次擴容的長度是15,用Arrays.copyOf()方法復制一個新的容量為新長度數(shù)組出來,復制給原先的數(shù)組。如果擴充的長度超過Integer.MAX_VALUE時會報OutOfMemoryError。

    增:ArrayList有兩種增加元素的方法,在數(shù)組的末尾直接添加元素即add(element)。還有一種方式是在指定的index上添加元素,此時如果該index上有元素,當前元素和后續(xù)元素都需后移,時間復雜度為O(N)。

    刪:ArrayList有兩種刪除元素的方法,按元素值刪除和按index刪除。按值刪除,首先需要找到元素值得位置,這里要注意的是,自定義對象要實現(xiàn)equals方法,因為決定元素值是否相等取決于equals的返回值。找到位置后,該位置后續(xù)的所有元素都要前移,時間復雜度為O(n)。按index刪除,根據(jù)index找到位置,該位置后面所有的元素前移,時間復雜度為O(n)。

    改:ArrayList的修改操作比較簡單,直接在數(shù)組的index,把新的值賦值給所在的index即可,時間復雜度為O(1)。

    查:直接根據(jù)index,找到位置取出值即可。

    結論:

    1、ArrayList適合創(chuàng)建前能預估容量大小的場景

    2、ArrayList適合于查詢和更改比較多的場景,不適合刪除比較多的場景

    3、在使用按值刪除操作時,需實現(xiàn)equals方法。個人建議,自定義對象默認都要實現(xiàn)equals和hashCode方法,不然容易掉坑里面。

    LinkedList

    LinkedList常用的增刪改查操作如下:

Java基礎學習:Java集合學習之list集合

    可以看到的是和ArrayList調(diào)用的方法是一樣的。但是實現(xiàn)原理是不一樣的。LinkedList的實現(xiàn)原理是一個鏈表。

    增:LinkedList同樣有兩種增加元素的方法,在鏈表尾部增加元素和指定index增加元素,在尾部增加元素,直接在last節(jié)點增加節(jié)點,重新復制last即可,時間復雜度為O(1).指定index增加元素,相比ArrayList多了個尋找index的操作,但是不需要移動元素,只需更改結點之間的指向關系就可以,時間復雜度為O(n)(不是通常認為的O(1),好多人認為是O(1)。

    刪:LinkedList同樣兩種刪除元素的方法,按元素值刪除和按index刪除。

    按值刪除,與ArrayList類似,不同的是元素不需要移動,時間復雜度為O(n)。按index刪除,根據(jù)index找到元素后,也不需要移動元素,時間復雜度為O(n)。

    改:根據(jù)index找到位置后,更新值。這個比較簡答,沒什么可說的,時間復雜度也是O(1)。

    查:LinkedList的查詢相對于ArrayList復雜度就比較高,LinkedList需要移動指針找到查詢的元素,時間復雜度為O(1)。

    結論:

    1、LinkedList不需要連續(xù)的內(nèi)存,分散的內(nèi)存空間也可以。ArrayList是必須要連續(xù)的存儲空間的。此外LinkedList沒有擴容這么一說。

    2、LinkedList增加和刪除沒有涉及元素的移動,相對ArrayList是比較合適的,但是不適合查詢。

    此外,LinkedList不僅僅用做List,還被經(jīng)常用作隊列和棧。隊列是一種先進先出FIFO的數(shù)據(jù)結構。棧是一種先進后出FILO的數(shù)據(jù)結構。這兩種數(shù)據(jù)結構是計算機中使用比較頻繁的數(shù)據(jù)結構,后續(xù)有空再詳細介紹

Java基礎學習:Java集合學習之list集合

 以上就是動力節(jié)點java培訓機構的小編針對“Java基礎學習:Java集合學習之list集合”的內(nèi)容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 色播五月激情五月 | 久久综合九色综合亚洲 | 成人影院在线免费观看 | 精品夜夜春夜夜爽久久 | 天堂成人在线视频 | 四虎免费永久网站入口 | 亚洲国产一区二区a毛片 | 波多野结衣一区2区3区 | 毛片视屏 | 日韩欧美高清在线 | 国产午夜精品一二区理论影院 | 国产亚洲精品久久久久久牛牛 | 最新亚洲情黄在线网站 | 亚洲一区二区三区高清不卡 | 伊人中文字幕在线 | 伊人影院视频 | 在线观看麻豆精品国产不卡 | 91精品国产自产91精品 | 国产情侣久久精品 | 99热久久这里只有精品7 | 免费香蕉依人在线视频久 | 狠狠色香婷婷久久亚洲精品 | 欧美激情久久久久久久大片 | 亚洲欧美天堂网 | 天天搞夜夜操 | 成人国产精品999视频 | 国产在线观看中文字幕 | 一级特黄女人生活片 | 久99re视频9在线观看 | 亚洲精品在线网站 | 国产成人精品cao在线 | 国内精品久久久久丫网址 | 97久久伊人精品影院 | 97精品视频共享总站 | 亚洲国产日韩欧美 | 欧美性大战久久久久久久蜜桃 | 欧美一区亚洲 | 欧美人成毛片在线播放 | 亚洲精品久久久久久久福利 | 久草在线中文视频 | 四色婷婷|