ArrayList,LinkedList,Vector都屬于List。
1. List:元素是有順序的,元素可以重復(fù)因?yàn)槊總€(gè)元素有自己的角標(biāo)(索引)
|-- ArrayList: 底層的數(shù)據(jù)結(jié)構(gòu)是數(shù)組結(jié)構(gòu),特點(diǎn)是:查詢很快,增 刪 稍微慢點(diǎn),線程不同步
|-- LinkedList:底層使用的是鏈表數(shù)據(jù)結(jié)構(gòu),特點(diǎn)是:增 刪很快,查詢慢。
|--Vector: 底層是數(shù)組數(shù)據(jù)結(jié)構(gòu),線程同步,被ArrayList代替了,現(xiàn)在用的只有他的枚舉。
2. Set:元素是無序的,且不可以重復(fù)(存入和取出的順序不一定一致),線程不同步
|--HashSet:底層是哈希表數(shù)據(jù)結(jié)構(gòu)。根據(jù)hashCode和equals方法來確定元素的唯一性。
|--TreeSet:可以對(duì)Set集合中的元素進(jìn)行排序(自然循序),底層的數(shù)據(jù)結(jié)構(gòu)是二叉樹,也可以自己寫個(gè)類實(shí)現(xiàn)Comparable 或者 Comparator 接口,定義自己的比較器,將其作為參數(shù)傳遞給TreeSet的構(gòu)造函數(shù)。
3. Map:這個(gè)集合是存儲(chǔ)鍵值對(duì)的,一對(duì)一對(duì)往里存,而且要確保鍵的唯一性(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),線程不同步,可以用于個(gè)map集合中的鍵進(jìn)行排序。
更多關(guān)于“Java培訓(xùn)”的問題,歡迎咨詢千鋒教育在線名師。千鋒已有十余年的培訓(xùn)經(jīng)驗(yàn),課程大綱更科學(xué)更專業(yè),有針對(duì)零基礎(chǔ)的就業(yè)班,有針對(duì)想提升技術(shù)的好程序員班,高品質(zhì)課程助力你實(shí)現(xiàn)java程序員夢(mèng)想。