国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層

這篇具有很好參考價(jià)值的文章主要介紹了java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

數(shù)據(jù)結(jié)構(gòu)

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言
對(duì)于數(shù)據(jù)結(jié)構(gòu)我這邊只告訴你右邊框框里的
java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

棧的特點(diǎn):后進(jìn)先出,先進(jìn)后出,入棧也成為壓棧,出棧也成為彈棧
棧就像一個(gè)彈夾

隊(duì)列先進(jìn)先出后進(jìn)后出
隊(duì)列像排隊(duì)

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言


java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

鏈表查詢滿 但是增刪快(相對(duì)于數(shù)組而言)

拓展:還有一個(gè)雙向鏈表 他在查詢?cè)氐臅r(shí)候更快些,因?yàn)樗谀玫揭粋€(gè)元素后先判斷離頭結(jié)點(diǎn)近一點(diǎn)還是尾結(jié)點(diǎn)

總結(jié)

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

ArrayList源碼底層

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

ArrayList用空參構(gòu)造創(chuàng)建對(duì)象.在底層創(chuàng)建一個(gè)默認(rèn)長(zhǎng)度為0的數(shù)組elementData(數(shù)組名) 然后有一個(gè)size指向元素
添加第一個(gè)元素的時(shí)候,底層才會(huì)創(chuàng)建一個(gè)新的長(zhǎng)度為10的1數(shù)組`
數(shù)組存滿的時(shí)候回添加一個(gè)新數(shù)組 新數(shù)組是老數(shù)組長(zhǎng)度的1.5倍 并且會(huì)把老數(shù)組的內(nèi)容拷貝過去
size有兩個(gè)含義:一個(gè)是集合長(zhǎng)度 一個(gè)當(dāng)他完成存儲(chǔ)他會(huì)指向下次存入的位置

如果一次添加多個(gè)元素,1.5倍放不下,則新創(chuàng)建數(shù)組的長(zhǎng)度以實(shí)際為準(zhǔn)
java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言
上圖為添加一個(gè)元素的經(jīng)過的流程

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

上圖為長(zhǎng)度為10的數(shù)組裝滿如何擴(kuò)容
minGrowth是至少要增加的容量
prefGrowth是默認(rèn)新增容量的大小.就是老容量的1.5倍

LinkedList

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言
java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言
獨(dú)有api,了解即可,因?yàn)檫@些方法,Collectoin都可以實(shí)現(xiàn)

底層源碼

LinkedList底層是一個(gè)雙向鏈表所以他有
空參構(gòu)造的成員位置有size和first last 頭結(jié)點(diǎn)為節(jié)點(diǎn).當(dāng)?shù)粲每諈?gòu)造就會(huì)自動(dòng)生成這些

node有三個(gè)成員變量
item現(xiàn)在要存儲(chǔ)的數(shù)據(jù)
next 下一個(gè)結(jié)點(diǎn)要記錄的地址值
prev我要記錄前一個(gè)結(jié)點(diǎn)的地址值


java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

空參構(gòu)造創(chuàng)建完對(duì)象就是上圖的樣子
java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

添加了一個(gè)結(jié)點(diǎn)

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

添加第二個(gè)元素的操作
java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言
添加第三個(gè).元素添加完畢

迭代器底層

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

獲取迭代器對(duì)象后相當(dāng)于創(chuàng)建自己內(nèi)部類對(duì)象(Itr)
內(nèi)部類有三個(gè)成員變量
cursor指針默認(rèn)初始化0
lasRet剛剛操作索引的位置

java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言

hasNext判斷原理
指針跟size比較直到指針為3


java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層,java,數(shù)據(jù)結(jié)構(gòu),開發(fā)語(yǔ)言
上面源碼就是為什么使用集合的方法太你家刪除元素會(huì)報(bào)錯(cuò)的原因.因?yàn)閙odCount在使用add或者remove會(huì)自增 最后他會(huì)拿著一開始modCount的值跟最新變化次數(shù)作比較 如果不一樣就會(huì)報(bào)錯(cuò)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-745172.html

到了這里,關(guān)于java 數(shù)據(jù)結(jié)構(gòu) ArrayList源碼底層 LinkedList 底層源碼 迭代器底層的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Java 【數(shù)據(jù)結(jié)構(gòu)】 LinkedList【神裝】

    Java 【數(shù)據(jù)結(jié)構(gòu)】 LinkedList【神裝】

    ? 登神長(zhǎng)階 第二神裝? ? LinkedList ? 目錄 ???一.LinkedList ??1.簡(jiǎn)介 ???2.LinkedList具體使用 ??2.1.構(gòu)造方法 ??2.2.常見操作 ??2.3.遍歷 ??三.LinkedList的優(yōu)缺點(diǎn) 與ArrayList的比較 ??四.總結(jié)與反思 在集合框架中,LinkedList是一個(gè)普通的類,實(shí)現(xiàn)了List接口,具體框架圖如下: 說明

    2024年04月14日
    瀏覽(19)
  • Java 中數(shù)據(jù)結(jié)構(gòu)LinkedList的用法

    Java 中數(shù)據(jù)結(jié)構(gòu)LinkedList的用法

    鏈表(Linked list)是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的地址。 鏈表可分為單向鏈表和雙向鏈表。 一個(gè)單向鏈表包含兩個(gè)值: 當(dāng)前節(jié)點(diǎn)的值和一個(gè)指向下一個(gè)節(jié)點(diǎn)的鏈接。 一個(gè)雙向鏈表有三個(gè)整

    2024年02月11日
    瀏覽(26)
  • 【數(shù)據(jù)結(jié)構(gòu)與算法】4、雙向鏈表(學(xué)習(xí) jdk 的 LinkedList 部分源碼)

    【數(shù)據(jù)結(jié)構(gòu)與算法】4、雙向鏈表(學(xué)習(xí) jdk 的 LinkedList 部分源碼)

    ?? 單鏈表的節(jié)點(diǎn)中只有一個(gè) next 指針引用著下一個(gè)節(jié)點(diǎn)的地址 ?? 當(dāng)要獲取單鏈表中的最后一個(gè)元素的時(shí)候,需要從頭節(jié)點(diǎn)開始遍歷到最后 ?? 單鏈表一開始的時(shí)候有 first 頭指針引用著頭節(jié)點(diǎn)的地址 ?? 雙向鏈表可以提升鏈表的綜合性能 ?? 雙向鏈表的節(jié)點(diǎn)中有 prev 指針引

    2024年02月12日
    瀏覽(22)
  • ArrayList 底層結(jié)構(gòu)和源碼分析

    ArrayList 實(shí)現(xiàn)了 List 接口。它可以存儲(chǔ)包括 null 的任何類型的對(duì)象,允許重復(fù)元素。 ArrayList 在內(nèi)部使用一個(gè)數(shù)組來(lái)存儲(chǔ)元素,當(dāng)元素?cái)?shù)量超過數(shù)組容量時(shí), ArrayList 會(huì)自動(dòng)重新分配更大的內(nèi)部數(shù)組,并且將現(xiàn)有元素復(fù)制到新數(shù)組中。 ArrayList 基本等同于 Vector ,但是 ArrayList 是

    2024年02月08日
    瀏覽(23)
  • ArrayList 底層結(jié)構(gòu)及源碼分析

    ArrayList 實(shí)現(xiàn)了 List 接口。它可以存儲(chǔ)包括 null 的任何類型的對(duì)象,允許重復(fù)元素。 ArrayList 在內(nèi)部使用一個(gè)數(shù)組來(lái)存儲(chǔ)元素,當(dāng)元素?cái)?shù)量超過數(shù)組容量時(shí), ArrayList 會(huì)自動(dòng)重新分配更大的內(nèi)部數(shù)組,并且將現(xiàn)有元素復(fù)制到新數(shù)組中。 ArrayList 基本等同于 Vector ,但是 ArrayList 是

    2024年02月08日
    瀏覽(20)
  • ArrayList底層結(jié)構(gòu)和源碼分析

    1.permits all elements, including null,ArrayList 可以加入null,并且多個(gè) 2.ArrayList是由數(shù)組來(lái)實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)的 3.ArrayList 基本等同于Vector,除了ArrayList是線程不安全(執(zhí)行效率高)看源碼.在多線程情況下,不建議使用ArrayList 代碼演示: ArrayList的底層操作機(jī)制源碼分析 (重點(diǎn),難點(diǎn).) 1.Arra

    2023年04月24日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))LinkedList與鏈表(上)

    數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))LinkedList與鏈表(上)

    鏈表 邏輯結(jié)構(gòu) 無(wú)頭單向非循環(huán)鏈表:結(jié)構(gòu)簡(jiǎn)單,一般不會(huì)單獨(dú)用來(lái)存數(shù)據(jù)。實(shí)際中更多是作為其他數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),如哈希桶、圖的鄰接表等等。 無(wú)頭雙向鏈表:在Java的集合框架庫(kù)中LinkedList底層實(shí)現(xiàn)就是無(wú)頭雙向循環(huán)鏈表。 鏈表的實(shí)現(xiàn) 創(chuàng)建一個(gè)鏈表 遍歷單鏈表 、 得到

    2024年02月11日
    瀏覽(30)
  • java數(shù)據(jù)結(jié)構(gòu)與算法:雙鏈表 LinkedList
  • 數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))LinkedList與鏈表(下)

    數(shù)據(jù)結(jié)構(gòu)(Java實(shí)現(xiàn))LinkedList與鏈表(下)

    ** ** 結(jié)論 讓一個(gè)指針從鏈表起始位置開始遍歷鏈表,同時(shí)讓一個(gè)指針從判環(huán)時(shí)相遇點(diǎn)的位置開始繞環(huán)運(yùn)行,兩個(gè)指針都是每次均走一步,最終肯定會(huì)在入口點(diǎn)的位置相遇。 LinkedList的模擬實(shí)現(xiàn) 單個(gè)節(jié)點(diǎn)的實(shí)現(xiàn) 尾插 運(yùn)行結(jié)果如下: 也可以暴力使用 全部代碼 MyLinkedList IndexOut

    2024年02月11日
    瀏覽(22)
  • 【Java--數(shù)據(jù)結(jié)構(gòu)】模擬實(shí)現(xiàn)ArrayList

    【Java--數(shù)據(jù)結(jié)構(gòu)】模擬實(shí)現(xiàn)ArrayList

    歡迎關(guān)注個(gè)人主頁(yè):逸狼 創(chuàng)造不易,可以點(diǎn)點(diǎn)贊嗎~ 如有錯(cuò)誤,歡迎指出~ 目錄 LIst 順序表ArrayList 順序表優(yōu)點(diǎn) IList接口 ArrayList中定義要操作的數(shù)組 在MyArrayList中 重寫接口方法 新增元素 在指定位置插入元素 ?pos不合法異常 判斷和查找元素 獲取和更新元素 刪除元素和清空順序

    2024年04月25日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包