您好,登錄后才能下訂單哦!
這篇文章主要講解了“Vector,ArrayList,LinkedList分別是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Vector,ArrayList,LinkedList分別是什么”吧!
說起Vector,ArrayList,LinkedList 想必Java開發(fā)者都已經(jīng)非常熟悉,這三個類基本上每月甚至每周都有人發(fā)出一遍來,故此網(wǎng)友將此類博客或回帖稱之為挖墳。
孔老夫子說得好啊,“溫故而知新,可以為師矣”(我確定不是魯迅說的)。
即便是咱們記得滾瓜爛熟的類啊函數(shù)啊,有時候還是有必要拉出來回顧一下。
我先不說這三個類有什么定義上的區(qū)別。咱們先從性能指數(shù)來看看,同樣的添加和刪除10w和整數(shù),在添加和刪除的耗時情況。
插入速度:不太明顯的是,在插入方面LinkedList要快Verctor和ArrayList大概不到2倍。當(dāng)然了,在少量的數(shù)據(jù)上,效果差異并沒有太大區(qū)別。所有離開場景的比對都是耍流氓,要說明的是Vector在插入元素時在方法上加了鎖,各位同學(xué)想必都知道鎖是一種安全但CPU開銷很大的東西。所以一般來說不管是自己實現(xiàn)的方法還是原生的,要慎重判斷是否需要使用鎖。
public synchronized boolean add(E e) { modCount++; ensureCapacityHelper(elementCount + 1); elementData[elementCount++] = e; return true; }
刪除速度:這個差距就非常明顯了,LinkedList怎么這么優(yōu)秀?那還用什么ArrayList?嘿嘿,別著急啊,看看訪問速度先。
訪問速度:哇去,竟然差這么多?剛剛還夸你優(yōu)秀,我用你個鬼,你個糟老集合壞得很。這其實是因為它的實現(xiàn)是雙向鏈表的原因,訪問某個元素是只能是一直尋找next,找到了才返回,不能通過下標(biāo)找到。
public boolean remove(Object o) { if (o == null) { for (Node<E> x = first; x != null; x = x.next) { if (x.item == null) { unlink(x); return true; } } } else { for (Node<E> x = first; x != null; x = x.next) { if (o.equals(x.item)) { unlink(x); return true; } } } return false; }
所以到這里大家知道怎么選擇使用自己需要的集合了吧?
感謝各位的閱讀,以上就是“Vector,ArrayList,LinkedList分別是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Vector,ArrayList,LinkedList分別是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。