Java 对比Vector、ArrayList、LinkedList
①引言
在日常生活中能高效的管理和操作數(shù)據(jù)是非常重要的。Java提供了強大的集合框架,大大提高了開發(fā)者的生產(chǎn)力,今天就了解一下有關(guān)集合框架方面的問題。
Vector、ArrayList、LinkedList這3者都是實現(xiàn)集合框架的List,也就是所謂的有序集合,因此具體功能也比較近似,比如都可以按照位置進行定位、添加或者刪除的操作,都提供迭代器遍歷其內(nèi)容。但因為具體的設計區(qū)別,在行為、性能、線程安全等方面。表現(xiàn)又有很大不同。
?
②Vector
Vector是Java早期提供的線程安全的動態(tài)數(shù)組,如果不需要線程安全,并不建議選擇,畢竟同步是有額外開銷的。Vector內(nèi)部是使用對象數(shù)組來保存數(shù)據(jù),可以根據(jù)需要來自動的增加容量,當數(shù)組已滿時,會創(chuàng)建新的數(shù)組,并copy原有數(shù)據(jù)。
?詳細內(nèi)容請參考 https://www.cnblogs.com/baxianhua/p/9209249.html
?
?③ArrayList
ArrayList是應用更加廣泛的動態(tài)數(shù)組實現(xiàn),它本身不是線程安全的,所以性能要好很多。與Vector近似,ArrayList也是可以根據(jù)需要調(diào)整容量,不過兩者的調(diào)整邏輯有區(qū)別,Vector在擴容時會提高一倍,而ArrayList會增加50% .
?詳細內(nèi)容請參考https://www.cnblogs.com/baxianhua/p/9211265.html
?
?④LinkedList
是Java提供的雙向鏈表。它不需要象上面兩種那樣調(diào)整容量,它也不是線程安全的。
?詳細內(nèi)容請參考https://www.cnblogs.com/baxianhua/p/9225445.html
?
⑤比較
Vector和ArrayList作為動態(tài)數(shù)組,其內(nèi)部元素以數(shù)組形式順序存儲,所以非常適合隨機訪問的場合。除了尾部插入和刪除元素,往往性能會較差,比如我們在中間位置插入一個元素,需要移動后面所有元素。而LinkedList進行節(jié)點插入刪除要高效很多,但是隨機訪問性能則要比動態(tài)數(shù)組慢。
?
轉(zhuǎn)載于:https://www.cnblogs.com/baxianhua/p/9208969.html
總結(jié)
以上是生活随笔為你收集整理的Java 对比Vector、ArrayList、LinkedList的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows批处理(cmd/bat)常
- 下一篇: Saltstack基本安装部署