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