ArrayList和Vector的區(qū)別:
1.Vector是線程同步的株灸,所以它也是線程安全的。而ArratList是線程異步的钻注,不安全蚂且。如果不考慮安全因素,一般用Arralist效率比較高幅恋,查看JDK文檔杏死,給出提示:
如果要實(shí)現(xiàn)Arraylist線程同步,可以通過下面方式:
如果多個線程同時訪問一個 ArrayList 實(shí)例捆交,而其中至少一個線程從結(jié)構(gòu)上修改了列表淑翼,那么它必須 保持外部同步。(結(jié)構(gòu)上的修改是指任何添加或刪除一個或多個元素的操作品追,或者顯式調(diào)整底層數(shù)組的大行ā;僅僅設(shè)置元素的值不是結(jié)構(gòu)上的修改肉瓦。)這一般通過對自然封裝該列表的對象進(jìn)行同步操作來完成遭京。如果不存在這樣的對象胃惜,則應(yīng)該使用Collections.synchronizedList
方法將該列表“包裝”起來。這最好在創(chuàng)建時完成哪雕,以防止意外對列表進(jìn)行不同步的訪問:
List list = Collections.synchronizedList(new ArrayList(...));
2.如果集合中的元素數(shù)量大于當(dāng)前集合數(shù)組的長度時船殉,Vector的增長率是目前數(shù)組長度的100%,而ArryaList增長率為目前數(shù)組長度的50%斯嚎。所以利虫,如果集合中使用數(shù)據(jù)量比較大的數(shù)據(jù),用Vector有一定優(yōu)勢堡僻。
作者:Flaygo
來源:CSDN
原文:https://blog.csdn.net/daoqin121/article/details/39337967