數據結構:是數據存儲時各個元素之間的關係。數組
分4種基本類型:集合、線性結構、樹形結構、圖狀結構;安全
JDK中的集合類:List、Set、Queue、Stack、Map數據結構
基本特色:多線程
一、List/Set/Queue都繼承Collection接口,Map是單獨的接口線程
二、List存儲類型一致數據能夠保證存儲的順序,但不保證元素是否重複;code
Set存儲類型一致的數據,不保證數據的存儲順序,但保證存儲的元素惟一;對象
Queue保證數據先進先出的順序;排序
Map存儲key-value類型的數據,key不重複(若重複會覆蓋原key對應的value值).繼承
實現類:接口
ArrayList:實現List接口,是動態數組實現的順序表。數組實現,訪問速度快,佔用空間小,不適合頻繁的增刪節點。
Vector:實現List接口,動態數組實現,元素有序,線程同步的
LinkedList:實現List接口,是基於鏈表實現的順序表。鏈表實現,適合長度不固定、元素增刪頻繁時使用。
HashSet:存儲元素可自動去重複,無序訪問,存儲對象必須實現hashcode()方法(這就是爲何不能存儲基本數據類型)
TreeSet:可對元素去重,保證元素的插入順序,可對元素排序(保存的元素須要實現Comparable接口,重寫compareTo方法)
HashMap:實現Map接口,是由數組+鏈表實現的(依據key的hash值決定在數組上的存儲位置,若hash衝突時保存到鏈表子節點上)
WeakHashMap:繼承AbstarctMap,實現Map接口;key對象弱引用
LinkedHashMap:繼承HashMap,會保存數據的插入順序
ConcurrentHashMap:實現Map接口,自帶同步鎖(線程安全,在多線程狀況下能夠使用)
HashTable:線程安全的map
TreeMap:繼承AbstarctMap,實現Map接口;能夠key值自動排序
Stack(棧):繼承Vector;元素後進先出(有入棧和出棧操做);線程安全
Queue(隊列):繼承List接口;可進行出隊、入隊操做(LinkedList也能夠實現)
ConcurrentLinkedQueue:
SynchronizedQueue:
BlockingQueue:阻塞隊列,繼承Queue;線程安全(可執行先進先出或後進先出操做);
子類還有ArrayBlockingQueue、LinkedBlockingQueue、DelayQueue、PriorityBlockingQueue、
SynchronousQueue
BlockingDeque:雙端阻塞隊列,繼承BlockingQueue;
實現類有LinkedBlockingDeque
TransferQueue:繼承BlockingQueue;
實現類有LinkedTransferQueue