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