亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JDK之List分析

2019-11-15 00:35:56
字體:
來源:轉載
供稿:網友
JDK之List分析

List在平時的開發當中用的也很多,但是一般都是面向接口編程,所以使用的是List類型,但是都是用ArrayList或者LinkedList進行相關操作。本文章主要講解JDK源碼之ArrayList和LinkedList。

ArrayList底層采用的是數組的形式維護的,主要的方法有add,remove,size,contains,toArray等相關方法。add其實很簡單,底層就是增加數組的長度,然后將要加入的元素放進數組。其實現方式方法為:this.elementData[(this.size++)] = paramE,在此操作之前,會增加將數組的長度加1,以放入新加的元素進入到當前數組中,也就實現了List的增加功能。但是,如果要想插入到指定的位置,操作就復雜一些。它會將當前數組向后移動1位,使用的是System.arraycopy復制后面的元素,然后將指定的元素插入。這樣的時間就是代價。所以在插入元素比較多的情況下,優先使用Linkedlist,待會會做介紹。remove道理是一樣的。不過remove有重載。當為下標int時,它會將指定的元素復制,然后將指定下標的元素設置為null,這樣就實現了指定下標刪除的功能。但是重載的不一樣。他接收Object類型,這樣,不管list中存儲的是什么類型,都可以進行remove。使用這個方法時,它會搜索符合條件的元素,并取到下標,然后使用firstRemove方法移除指定的元素。當然這種方法只能移除第一個元素,如果想要移除匹配的所有元素,就得遍歷,或者使用removeAll方法了。需要注意的是,removeAll接收參數為Collection的。至于ArrayList中的size就很簡單了,因為底層是數組,所以只需要返回當前數組的大小就是此list長度了。contains返回的是當前數組的下標,使用方法indexOf,如果沒有則indexOf回返-1。toArray方法返回的是list數組的形式,直接使用Array中的copy即可。其實ArrayList中有個重要的方法,就是迭代器,不過迭代器是在父類AbstractList中的,且放在了內部類Itr中,使用時,直接定義一個迭代器Iterator,然后調用iterator方法,此方法返回內部類的對象,此時就可以通過這個對象進行迭代,包括方法next和hasNext。這個是最常用的,此處重點分析實現。我們可以先定義一個接口類型的Iterator,使用iterator()直接獲取對象,此方法返回的是一個Itr對象(內部類,存在于父類中),這個內部類包含了next和hasNext,然后就可以使用這個對象去遍歷數組。hasNext即判斷當前是否還有元素,這個方法使用了游標的概念,當前游標與當前數組的大小是否相等,返回true或false。然后使用hasNext拿出值,并將游標向后移動一位。這樣就可以遍歷數組了。當然這個方法是在父類中,在ArrayList中時看不見的。迭代器使用了典型的面向接口編程思想,只是定義了接口類型,然后去調用實現類中相關的方法。(面向接口編程后期會做具體分析)。API中說使用了迭代器以后,就不能對該list進行更改了,具體原因我在JDK中沒有找出。初步分析是由于游標的緣故,希望知道的網友給出答案。(ArrayList不是線程安全的,API中講到,如果他線程安全,只需將其放到Collections.synchronizedList中,這個在工作中還真的很少用到,看了JDK的源碼,其做法是將list放進SynchronizedList代碼塊中,具體的實現不看了,反正我很少用到。

    LinkedList跟ArrayList很多方法的功能都是一樣的,但是實現方式方法卻很不一樣。他的底層使用的是鏈表實現的,使用了內部類Entry,Entry包含了element、next、PRevious。當實例化list的時候,就會對這三個變量進行賦值,后期的一切操作都是圍繞著這三個變量展開。在這同樣先分析方法add,remove,size,contains方法。在介紹add之前先介紹addBefore。addBefore是將當前元素封裝成一個Entry,然后next和previous分別重新賦值,這樣就實現了鏈表的向后移動,即望鏈表上加入元素。鏈表這個東西有興趣的可以自己看看數據結構。add方法調用的就是addBefore,但是對于鏈表中的next使用的是header,這樣就將元素加入到了鏈表。此list的add方法代價是巨大的,因為他要移動鏈表的next和previous,沒有ArrayList中簡單,直接賦值就可以了。remove方法的實現原理差不多,也是對鏈表進行的操作。size方法就是返回當前鏈表的長度,不做過多介紹。contains方法就是對鏈表進行的遍歷,一步一步移動鏈表,并進行匹配。toArray方法底層的實現是將鏈表的元素取出來,放進一個數組,并返回該數組,而病史想ArrayList中那樣,直接返回數組。LinkedList的迭代器與ArrayList的迭代器相似,但是底層的實現不一樣,如hasNext,他是用的是this.nextIndex來判斷是否有下一個元素,而并不是查看數組中是否有元素。關于LinkedList需要深入的看下,今天我只看了一些表面的知識,以后會補充上來。

今晚就分析到這,其實這兩個類中還有很多地方需要看,希望廣大網友提供很好的分析,相互學習。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲毛片在线看| 亚洲欧洲国产伦综合| 欧美黑人一级爽快片淫片高清| 在线不卡国产精品| 精品中文字幕视频| 亚洲精品美女久久久久| 精品久久久精品| 在线国产精品视频| 久久久久久久久久久免费精品| 久久成人精品一区二区三区| 日韩精品www| 免费99精品国产自在在线| 日韩精品在线观看一区二区| 精品色蜜蜜精品视频在线观看| 国产精品对白刺激| 国模极品一区二区三区| 欧美成人免费一级人片100| 国产在线观看一区二区三区| 亚洲激情视频在线观看| 91国自产精品中文字幕亚洲| 国产在线视频2019最新视频| 成人午夜两性视频| 亚洲人成在线免费观看| 国产精品久久婷婷六月丁香| 久久久久久久久久久网站| 美女精品久久久| 国产日产亚洲精品| 国产精品视频资源| 国产98色在线| 欧美黄网免费在线观看| 欧美一级片一区| 91日本在线观看| 中文综合在线观看| 亚洲成av人乱码色午夜| 97在线看免费观看视频在线观看| 成人欧美一区二区三区黑人| 欧美大片在线免费观看| 不用播放器成人网| 亚洲精品国偷自产在线99热| 亚洲色图国产精品| 国产精品网红直播| 日本欧美在线视频| 久久精品99国产精品酒店日本| 欧美日韩国产中文精品字幕自在自线| 欧美激情一区二区三区高清视频| 亚洲免费视频网站| 欧美日韩成人在线观看| 岛国视频午夜一区免费在线观看| 日韩风俗一区 二区| 8090成年在线看片午夜| 国产成人短视频| 国产精品国产三级国产专播精品人| 亚洲伊人成综合成人网| 正在播放欧美一区| 日韩av在线一区二区| 国产午夜精品免费一区二区三区| 国产精品久久久久999| 国产精品久久久久av| 国产99久久精品一区二区 夜夜躁日日躁| 久久韩剧网电视剧| 粗暴蹂躏中文一区二区三区| 久久精品国产99国产精品澳门| 精品国产成人av| 久久国产精品久久久久| 欧美大片第1页| 91沈先生作品| 成人在线观看视频网站| 亚洲人成77777在线观看网| 亚洲www视频| 久久久久久中文| 国产主播欧美精品| 久久精品视频中文字幕| 俺去了亚洲欧美日韩| 欧美富婆性猛交| 日韩精品有码在线观看| 欧美激情一区二区三级高清视频| 中文字幕精品久久| 国产精品va在线播放我和闺蜜| 麻豆成人在线看| 亚洲区在线播放| 日韩视频第一页| 91产国在线观看动作片喷水| 国产精品一二三视频| 色妞欧美日韩在线| 欧美国产日韩在线| 欧美激情视频免费观看| 日韩在线激情视频| 亚洲国产成人精品久久久国产成人一区| 97碰在线观看| www高清在线视频日韩欧美| 国产欧美在线播放| 国产精品自拍小视频| 一区二区三区视频免费| 精品久久久一区| 日本精品久久中文字幕佐佐木| 午夜剧场成人观在线视频免费观看| 国产精品午夜国产小视频| 久久久电影免费观看完整版| 国产激情视频一区| 国模精品一区二区三区色天香| 国产精品久久久999| 成人妇女免费播放久久久| 国产女人18毛片水18精品| 日韩小视频网址| 国产91精品久久久| 播播国产欧美激情| 亚洲成人av在线播放| 久久久噜久噜久久综合| 日韩高清中文字幕| 精品视频一区在线视频| 国产综合福利在线| 亚洲人成人99网站| 91免费在线视频网站| 九九热精品视频国产| 久久影视电视剧免费网站| 欧美黄色片免费观看| 亚洲乱码av中文一区二区| 欧美激情乱人伦一区| 亚洲欧美日韩一区二区三区在线| 国产精品亚洲网站| 亚洲激情国产精品| 久久久综合免费视频| 97精品一区二区视频在线观看| 一区二区三区视频免费| 自拍视频国产精品| 97**国产露脸精品国产| 国产色婷婷国产综合在线理论片a| 欧美电影免费播放| 国产精品九九久久久久久久| 日产精品久久久一区二区福利| 日韩电影中文字幕在线观看| 久久国产精品久久精品| 久久久久北条麻妃免费看| 久久久久久久久久久人体| 国产第一区电影| 怡红院精品视频| 久久久精品亚洲| 亚洲欧美日韩综合| 亚洲风情亚aⅴ在线发布| 精品动漫一区二区三区| 国产精品美乳一区二区免费| 日韩中文字幕在线免费观看| 亚洲性生活视频| 91po在线观看91精品国产性色| 亚洲精品国偷自产在线99热| 欧美三级欧美成人高清www| 亚洲精品大尺度| 狠狠躁夜夜躁人人爽超碰91| 97超级碰碰碰| 精品国产福利在线| 成人福利视频网| 亚洲性视频网站| 国产精品久久999| 国产精品自产拍在线观看中文| 日韩中文字幕国产精品| 精品在线观看国产| 日韩网站免费观看高清| 欧美激情va永久在线播放| 亚洲第一区第二区| 久久中文久久字幕| 国产91精品久久久久久| 国产亚洲欧美日韩美女| 亚洲美女黄色片| 国产精品成人v|