最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java編程語(yǔ)言中ArrayList和LinkedList之間的區(qū)別

2018-11-06 15:07 作者:動(dòng)力節(jié)點(diǎn)  | 我要投稿

  一、ArrayList


  ArrayList是一個(gè)可以處理變長(zhǎng)數(shù)組的類型,這里不局限于“數(shù)”組,ArrayList是一個(gè)泛型類,可以存放任意類型的對(duì)象。顧名思義,ArrayList是一個(gè)數(shù)組列表,因此其內(nèi)部是使用一個(gè)數(shù)組來(lái)存放對(duì)象的,因?yàn)镺bject是一切類型的父類,因而ArrayList內(nèi)部是有一個(gè)Object類型的數(shù)組類存放對(duì)象。ArrayList類常用的方法有add()、clear()、get()、indexOf()、remove()、sort()、toArray()、toString()等等,同時(shí)ArrayList內(nèi)部有一個(gè)私有類實(shí)現(xiàn)Iterator接口,因此可以使用iterator()方法得到ArrayList的迭代器,同時(shí),還有一個(gè)私有類實(shí)現(xiàn)了ListIterator接口,因此ArrayList也可以調(diào)用listIterator()方法得到ListIterator迭代器。


  由于ArrayList是依靠數(shù)組來(lái)存放對(duì)象的,只不過(guò)封裝起來(lái)了而已,因此其一些查找方法的效率都是O(n),跟普通的數(shù)組效率差不多,只不過(guò)這個(gè)ArrayList是一個(gè)可變”數(shù)組“,并且可以存放一切指定的對(duì)象。


  另外,由于ArrayList的所有方法都是默認(rèn)在單一線程下進(jìn)行的,因此ArrayList不具有線程安全性。若想在多線程下使用,應(yīng)該使用Colletions類中的靜態(tài)方法synchronizedList()對(duì)ArrayList進(jìn)行調(diào)用即可。


  二、LinkedList


  LinkedList可以看做為一個(gè)雙向鏈表,所有的操作都可以認(rèn)為是一個(gè)雙向鏈表的操作,因?yàn)樗鼘?shí)現(xiàn)了Deque接口和List接口。同樣,LinkedList也是線程不安全的,如果在并發(fā)環(huán)境下使用它,同樣用Colletions類中的靜態(tài)方法synchronizedList()對(duì)LinkedList進(jìn)行調(diào)用即可。


  在LinkedList的內(nèi)部實(shí)現(xiàn)中,并不是用普通的數(shù)組來(lái)存放數(shù)據(jù)的,而是使用結(jié)點(diǎn)<Node>來(lái)存放數(shù)據(jù)的,有一個(gè)指向鏈表頭的結(jié)點(diǎn)first和一個(gè)指向鏈表尾的結(jié)點(diǎn)last。不同于ArrayList只能在數(shù)組末尾添加數(shù)據(jù),LinkList可以很方便在鏈表頭或者鏈表尾插入數(shù)據(jù),或者在指定結(jié)點(diǎn)前后插入數(shù)據(jù),還提供了取走鏈表頭或鏈表尾的結(jié)點(diǎn),或取走中間某個(gè)結(jié)點(diǎn),還可以查詢某個(gè)結(jié)點(diǎn)是否存在。add()方法默認(rèn)在鏈表尾部插入數(shù)據(jù)??傊?,LinkedList提供了大量方便的操作方法,并且它的插入或增加等方法的效率明顯高于ArrayList類型,但是查詢的效率要低一點(diǎn),因?yàn)樗且粋€(gè)雙向鏈表。


  因此,LinkedList與ArrayList最大的區(qū)別是LinkedList更加靈活,并且部分方法的效率比ArrayList對(duì)應(yīng)方法的效率要高很多,對(duì)于數(shù)據(jù)頻繁出入的情況下,并且要求操作要足夠靈活,建議使用LinkedList;對(duì)于數(shù)組變動(dòng)不大,主要是用來(lái)查詢的情況下,可以使用ArrayList。

下面的代碼得不出結(jié)果速度太慢

  

下面化成ArrayList速度就超快

remove方法對(duì)LinkedList類的使用

a.利用iterator類

b.不利用iterator的話則則需要調(diào)用get方法。則效率很低


Java編程語(yǔ)言中ArrayList和LinkedList之間的區(qū)別的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
松江区| 呈贡县| 雅江县| 盐山县| 长宁县| 新兴县| 双桥区| 宁乡县| 库伦旗| 西城区| 丽江市| 荣昌县| 邹平县| 鄂托克旗| 永昌县| 错那县| 仁怀市| 新密市| 安泽县| 都兰县| 连平县| 晋中市| 遵义市| 黄陵县| 禹城市| 甘泉县| 金秀| 景洪市| 五河县| 越西县| 瓦房店市| 潼南县| 九龙县| 成都市| 昔阳县| 宁乡县| 汝阳县| 毕节市| 通山县| 比如县| 邮箱|