一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - Java中的Vector和ArrayList區別及比較

Java中的Vector和ArrayList區別及比較

2019-12-14 14:56junjie JAVA教程

這篇文章主要介紹了Java中的Vector和ArrayList區別及比較,本文從API、同步、數據增長、使用模式4個方面總結了它們之間的不同之處,需要的朋友可以參考下

Vector  和  ArrayList 比較

有時用Vector更好一點,有時用ArrayList更好一點,不能準確容易的給出答案,因為要視具體情況而定,有四個主要考慮的因素:

1:API
2: 同步(synchronization)
3:數據增長(Data  growth)
4:使用模式(Usage  pattern)

下面分別意義探討:

1:API

在Ken Arnold, James Gosling, and David Holmes 的 Java 程序語言的描述中,Vector和ArrayList是類比設計的,從API 的角度來看,兩個類有很多相似性,但是兩個類也有一些不同。

2:同步(Synchronization)

從同步性的角度考慮 :  Vector是同步的,一些訪問Vector的內容的方法是線程安全的,而ArrayList是非同步的,訪問ArrayList的內容的方法是線程不安全的,因為有這個不同,使用synchronized關鍵字修飾的,將會在性能上有所下降,因此如果你不需要一個線程安全的集合,使用ArrayList。不用花費不必要的synchronization性能開銷。

3:數據增長(Data   growth)

從內部的數據結構來看,ArrayList 和 Vector都是使用  數組(Array)的模式存放內容,你需要在程序設計中小心這個本質,當在 ArrayList和 Vector中插入數據時,如果ArrayList或 Vector的對象存儲超出了對應的空間(即內部數組長度)。對應的ArrayList或 Vector將會擴充它們的內部的數組。 Vector默認擴充內部數組的一倍,就是相當于兩個以前的數組的大小,而ArrayList僅僅增加50%的大小,根據你使用哪個類來確定增加一個元素的性能影響,最好的方式就是設置對象的初始化容量為需要的最大容量,這樣能夠避免以后插入元素后的自增長,(自增長會涉及到數組內部元素的復制到新創建的數組中),如果你不知道數據將增長到多大,但是你知道數據增長的速率,Vectory能夠擁有輕微的優勢,因為你能夠設置增長的值。

至于為什么要把 Vector設置為同步和自增長為自身大小的一倍而ArrayList設置為非同步自增長為自身大小的一半:

八卦一下:設置為同步說明數據增長比較激烈,就是增長速率和頻率較大,如果設置為一半,很快數組又滿了,所以設置為一倍。

而ArrayList相應的 增長速率慢,設置為不同步,不容易出現多線程并發問題。
八卦只是個人理解,歡迎拍磚。

4:使用模式(usage pattern)

ArrayList和Vector都是比較好的在檢索特定位置 的元素的時候以及在集合的末尾增加和移除元素,所有以上的操作都是在O(1)的線性時間,但是如果增加和移除一些別的位置的元素(非最末尾位置)需要更昂貴的線性時間開銷為O(n-i),n代表了元素的總個數,i代表了插入或移除的索引位置,這些操作代價更大,因為不得不移動索引i后端所有的元素,這意味著什么呢?

這意味著你先查找到索引為以及 i 以后 的元素,然后在數組的末尾插入和移除該元素。如果你想做插入或刪除,可以考慮一些別的集合類,例如:LinkedList能夠增加或移除一些位置的元素在常量時間O(1)內,但是索引元素的位置比較慢,需要O(i)的時間開銷,i 是需要的元素的索引,遍歷ArrayList是很容易的,因為你能夠簡單的使用索引代替創建一個迭代器,LinkedList也為每一個插入的元素創建一個內部的對象,因此你必須意識到額外的垃圾被創建。

最后聲明:你能夠使用最普通的數組來代替Vector或者ArrayList,尤其是因為標準代碼的性能,使用數組能夠避免同步(synchronization),額外的方法調用,最適度的調整大小,你僅僅需要花費額外的開發時間。通過array能夠為您的程序量身定做需要的集合。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: aa一级护士医生毛片 | 亚洲AV福利天堂一区二区三 | 欧美精品一区二区三区免费播放 | 免费的强动漫人物的 | 国产良心大作白丝精厕 | 日日骑夜夜骑 | 激情偷拍网 | 狠狠久久久久综合网 | 香蕉久久夜色精品国产尤物 | 国产成+人+综合+亚洲欧美丁香花 | 香蕉免费高清完整 | 王淑兰与铁柱全文免费阅读 | 99在线精品免费视频 | 很黄的网站在线观看 | 性猛交娇小69hd | 情侣奴伺候女王第2部分小说 | 国产成人a∨麻豆精品 | 国产高清在线精品一区二区 | 日韩精品欧美高清区 | 日韩在线视频一区二区三区 | 好大水好多好爽好硬好深视频 | kisssis无减删全集在线观看 | h视频免费高清在线观看 | 亚洲国产精品久久网午夜 | 久久国产综合精品欧美 | 91欧美国产| 动漫xnxx| 男人天堂日韩 | 国内精品一区视频在线播放 | 男男gaygays国内 | 蜜桃视频在线观看官网 | 免费一级日本c片完整版 | 日本大片免a费观看在线 | 美女露尿口 | 2022最新a精品视频在线观看 | 思敏1一5集国语版免费观看 | 欧美视频免费 | 天天做天天爽天天谢 | 国产精品亚洲精品日韩已满 | 精品综合久久久久久8888 | 大乳奶水bbw |