JDK提供了一組主要的數據結構實現,如List、Map、Set等經常使用數據結構。這些數據都繼承自 java.util.Collection 接口,並位於 java.util 包內。java
最重要的三種List接口實現:ArrayList、Vector、LinkedList。它們的類圖以下:算法
能夠看到,3種List均來自 AbstratList 的實現。而 AbstratList 直接實現了List接口,並擴展自 AbstratCollection。數組
ArrayList 和 Vector 使用了數組實現,能夠認爲,ArrayList 封裝了對內部數組的操做。好比向數組中添加、刪除、插入新的元素或數組的擴展和重定義。對ArrayList或者Vector的操做,等價於對內部對象數組的操做。安全
ArrayList 和 Vector 幾乎使用了相同的算法,它們的惟一區別能夠認爲是對多線程的支持。ArrayList 沒有對一個方法作線程同步,所以不是線程安全的。Vector 中絕大多數方法都作了線程同步,是一種線程安全的實現。所以ArrayList 和 Vector 的性能特性相差無幾。數據結構
LinkedList 使用了循環雙向鏈表數據結構。LinkedList 由一系列表項鍊接而成。一個表項老是包含3個部分:元素內容、前驅表項和後驅表項。如圖所示:多線程