Java中List集合效能比較

山有木xi發表於2020-03-01

List是一個元素有序,可重複集合,集合中每個元素都有其對應的順序索引,List集合允許使用重複元素,可以透過索引來訪問指定位置的集合元素

var a=new ArrayList();
a.add(new String("zxc"));
System.out.println(a.indexOf(new String("zxc")));

這段程式碼,程式試圖返回zxc的位置,但實際上List並未包含該字串物件,因為在List集合新增時,使用的是new String,但是最後程式依然返回1,這是因為,在List中對比兩個程式是否相等,只透過equals

在整個List系列中,ArrayList和LinkedList又是線性表的典型實現:基於陣列的線性表和基於鏈的線性表,Queue代表了佇列,Deque代表了雙端佇列

一般來說,由於陣列以一塊連續記憶體儲存所有陣列元素,所以陣列想隨機訪問時效能最好,所有的內部以陣列作為底層實現的集合在隨機訪問時效能都比較好,而內部以連結串列作為底層實現的集合在執行插入,刪除操作時有較好的效能,但總體來說,ArrayList比linkedList效能要好

  • 在需要遍歷時,對於ArrayList,Vector,應該使用隨機訪問方法來遍歷,對於LinkedList,則應該使用迭代器Iterator來遍歷

  • 如果需要經常執行插入,刪除,則LinkedList更好,因為ArrayList和Vector需要經常出現分配記憶體空間大小

  • 如果有多個執行緒同時訪問List集合中的元素,可以考慮透過Collection將集合包裝成執行緒安全的集合


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2677940/,如需轉載,請註明出處,否則將追究法律責任。

相關文章