集合框架 List 實現

2021-07-31 06:12:06 字數 1281 閱讀 1377

list 實現分為通用 list 實現和特殊用途的 list 實現。

有兩個通用的 list 實現 —— arraylist 和 linkedlist。大多數時候,你可能會使用 arraylist,它提供了按位置訪問的功能並且速度比較快。當你需要同時移動多個元素的時候,可以充分發揮 system.arraycopy 的優勢。可以將 arraylist 看成是沒有同步功能的 vector。

如果你需要經常在 list 的頭部新增元素或者遍歷 list 並從內部刪除元素,那麼你可以考慮使用 linkedlist。這些操作在 linkedlist 中需要的是常數時間,而在 arraylist 中卻需要線性時間。不過你會付出效能上的代價,因為在 linkedlist 中按位置訪問需要線性時間,而在 arraylist 中只需要常數時間。如果你想使用 linkedlist,請在你做出決定前在你的系統中測試一下 linkedlist 和 arraylist 的效能,通常情況下 arraylist 更快。

arraylist 有乙個調整引數 —— 容器初始值,它表示 arraylist 在它的資料增長之前可以存放的元素個數。linkedlist 並沒有調整引數,並且有 7 個可選的操作,其中乙個是 clone。另外 6 個分別是, addfirst, getfirst, removefirst, addlast, getlast, 和 removelast。linkedlist 還實現了 queue 介面。

copyonwritearraylist 是實現了複製到陣列進行備份的 list。這個實現非常像 copyonwritearrayset。並不需要進行同步,即使在迭代期間,迭代器也會保證不會丟擲 concurrentmodificationexception。這個實現很適合用於維護事件處理器列表,這個列表中的資料很少會改變,但是會頻繁地進 行迭代和潛在的時間消耗。

如果你需要同步,那麼 vector 將會比使用 collections.synchronizedlist 建立的 arraylist 略快。但是 vector 會有一些遺留的操作,所以在使用 vector 的時候請盡量使用 list 介面中的方法,或者你確定在以後不會更改 vector 實現。

如果 list 的大小是固定的 —— 也就是說,你不會呼叫 remove,add,或任何除了 containsall 之外的批量操作 —— 那麼你還有第三個選擇值得考慮一下。那就是 arrays.aslist,具體內容以後再討論。

list 集合框架

集合框架中提供了乙個內部類專門操作集合中的元素,這個內部類就是迭代器 資料結構 集合框架的由來 資料多了用物件進行儲存,物件多了用集合來進行儲存。而儲存資料的方式 資料結構 各有不同,所以儲存的容器也就有多種,從而形成了集合框架這一體系。集合父類 list介面 集合子類 arraylist vect...

list集合框架

集合框架的由來 資料多了用物件進行儲存,物件多了用集合來進行儲存。而儲存資料的方式 資料結構 各有不同,所以儲存的容器也就有多種,從而形成了集合框架這一體系 集合的的三種遍歷方式 foreach,迭代器 collection c new arraylist c.add 23 c.add 22 c.a...

集合框架 List

list arraylis 以陣列為底層,記憶體分配連續的記憶體空間,遍歷與訪問的效率高 建立arraylist物件進行一系列的操作 不指定型別建立 arraylist arraylist new arraylist 指定型別建立 arraylist new arraylist 構造方法可以指定建立...