ArrayList、LinkedList、Vector、Stack的區別

ArrayList:

實現了List接口(List接口繼承了Collection接口);
實現了Serializable接口,表示支持序列化,能通過序列化去傳輸(序列化:用來處理對象流的一種機制);
實現了Cloneable接口,即覆蓋了函數clone,以指示clone()方法可以合法地對該類實例進行按字段複製;
實現了RandomAccess接口,即提供了隨機訪問功能,RandmoAccess是java中用來被List實現,爲List提供快速訪問功能的;
基於動態數組的數據結構,數組元素可以重複,有序集合,即存儲在ArrayList中的元素,我們都可以通過其位置索引取得。

注意:ArrayList中的操作是線程不安全的,所以建議在單線程中使用。

LinkedList:

實現了List接口(List接口繼承了Collection接口);
實現了Serializable接口,表示支持序列化,能通過序列化去傳輸(序列化:用來處理對象流的一種機制);
實現了Cloneable接口,即覆蓋了函數clone,以指示clone()方法可以合法地對該類實例進行按字段複製;
實現Deque接口,即能將LinkedList當作雙端隊列使用;
基於鏈表的數據結構,數組元素可以重複,有序集合。
LinkedList是非同步的。

Vector:

Vector和ArrayList其實是比較相似的,
實現了List接口(List接口繼承了Collection接口);
實現了Serializable接口,表示支持序列化,能通過序列化去傳輸(序列化:用來處理對象流的一種機制);
實現了Cloneable接口,即覆蓋了函數clone,以指示clone()方法可以合法地對該類實例進行按字段複製;
實現了RandomAccess接口,即提供了隨機訪問功能,RandmoAccess是java中用來被List實現,爲List提供快速訪問功能的;

實現了List接口(List接口繼承了Collection接口),是一個矢量隊列。

注意:Vectot的操作是線程安全的,建議使用在多線程操作中,在單線程中效率沒有使用ArrayList高。

Stack:

棧是Vector的一個子類,它實現了一個標準的後進先出的棧。

堆棧只定義了默認構造函數,用來創建一個空棧。 堆棧除了包括由Vector定義的所有方法,也定義了自己的一些方法。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章