ArrayList,LinkedList,Vector都屬于List。
1. List:元素是有順序的,元素可以重復因為每個元素有自己的角標(索引)
|-- ArrayList: 底層的數據結構是數組結構,特點是:查詢很快,增 刪 稍微慢點,線程不同步。
|-- LinkedList:底層使用的是鏈表數據結構,特點是:增 刪很快,查詢慢。
|--Vector: 底層是數組數據結構,線程同步,被ArrayList代替了,現在用的只有他的枚舉。
2. Set:元素是無序的,且不可以重復(存入和取出的順序不一定一致),線程不同步。
|--HashSet:底層是哈希表數據結構。根據hashCode和equals方法來確定元素的唯一性。
|--TreeSet:可以對Set集合中的元素進行排序(自然循序),底層的數據結構是二叉樹,也可以自己寫個類實現Comparable或者Comparator接口,定義自己的比較器,將其作為參數傳遞給TreeSet的構造函數。
3. Map:這個集合是存儲鍵值對的,一對一對往里存,而且要確保鍵的唯一性(01,張三)這樣的形式打印出來就是01=張三
|--HashTable:底層是哈希表數據結構,不可以存入null鍵和null值,該集合線程是同步的,效率比較低。出現于JDK1.0
|--HashMap:底層是哈希表數據結構,可以存入null鍵和null值,線程不同步,效率較高,代替了HashTable,出現于JDK。
|--TreeMap:底層是二叉樹數據結構,線程不同步,可以用于個map集合中的鍵進行排序。