LinkedList:

%20 %201、含有含參構造方法和無參構造方法(實現Collection的類都至少含有兩種構造方法)。
%20 %202、實現了Deque、Queue接口,因此也可以作為堆棧、隊列使用。
%20 %203、采用雙向循環鏈表保存對象(查詢效率低,但是增刪效率很高。適用于增刪動作的比較頻繁,查詢次數較少的元素管理集合)。
%20
ArrayList:
1、含有含參構造方法和無參構造方法,無參構造方法構造的ArrayList的容量默認為10(實現Collection的類都至少含有兩種構造方法)。
2、內部實現是基于內部數組Object[](因此查詢效率比較高,增刪動作的效率比較差,適用于查詢比較頻繁,增刪動作較少的元素管理的集合)。
1、 LinkedList和ArrayList都是線程不安全的,線程安全問題是由多個線程同時寫或同時讀寫同一個資源造成的。原因:
final void checkForComodification() {
if (modCount != expectedModCount) throw new ConcurrentModificationException(); }
代碼中,modCount記錄了LinkedList結構被修改的次數。Iterator初始化時,expectedModCount=modCount。任何通過Iterator修改LinkedList結構的行為都會同時更新expectedModCount和modCount,使這兩個值相等。通過LinkedList對象修改其結構的方法只更新modCount。所以假設有兩個線程A和B。A通過Iterator遍歷并修改LinkedList,而B,與此同時,通過對象修改其結構,那么Iterator的相關方法就會拋出異常。這是相對容易發現的由線程競爭造成的錯誤。
避免安全問題,則使用同步機制:① 使用synchronized關鍵字。② List list = Collections.synchronizedList(new LinkedList(...));非常損耗性能。
2、實現了Serializable接口,因此它支持序列化,能夠通過序列化傳輸,實現了Cloneable接口,能被克隆。
新聞熱點
疑難解答