国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java ArrayList 和 LinkedList區別

2019-11-14 20:54:45
字體:
來源:轉載
供稿:網友
java ArrayList 和 LinkedList區別

ArrayList是實現了基于動態數組的數據結構,LinkedList基于鏈表的數據結構。

1.對ArrayList和LinkedList而言,在列表末尾增加一個元素所花的開銷都是固定的。對ArrayList而言,主要是在內部數組中增加一項,指向所添加的元素,偶爾可能會導致對數組重新進行分配;而對LinkedList而言,這個開銷是統一的,分配一個內部Entry對象。

2.在ArrayList的中間插入或刪除一個元素意味著這個列表中剩余的元素都會被移動;而在LinkedList的中間插入或刪除一個元素的開銷是固定的。

3.LinkedList不支持高效的隨機元素訪問。

4.ArrayList的空間浪費主要體現在在list列表的結尾預留一定的容量空間,而LinkedList的空間花費則體現在它的每一個元素都需要消耗相當的空間

可以這樣說:當操作是在一列數據的后面添加數據而不是在前面或中間,并且需要隨機地訪問其中的元素時,使用ArrayList會提供比較好的性能;當你的操作是在一列數據的前面或中間添加或刪除數據,并且按照順序訪問其中的元素時,就應該使用LinkedList了。

我們常說ArrayList是非線程安全的,Vector是線程安全的,說ArrayList的效率要高于Vector。

查看ArrayList和Vector的源碼,其實會發現Vector跟ArrayList的操作基本一樣,

只是把所有改變列表元素的方法和部分跟位置或變化有關系的查詢方法加上了synchronized的同步處理。所以我們可以這樣理解:1、如果List不會被多線程并發訪問,使用ArrayList就沒有問題,且效率更高。2、如果有多線程并發訪問List,可以使用Vector,也可以使用ArrayList,并且自己對可能出現并發沖突的地方自行做synchronized處理即可。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 呼伦贝尔市| 阿城市| 乌拉特后旗| 鱼台县| 鸡西市| 南宫市| 武宣县| 吴江市| 聊城市| 鱼台县| 富蕴县| 西乌珠穆沁旗| 九龙城区| 新化县| 中江县| 甘孜县| 潼关县| 东明县| 资溪县| 布尔津县| 太和县| 交口县| 华安县| 陆丰市| 开化县| 蓬溪县| 德庆县| 四川省| 华宁县| 华池县| 文水县| 隆林| 衡阳市| 株洲市| 东海县| 青岛市| 汕头市| 尼玛县| 应用必备| 井冈山市| 赣州市|