1. List簡介
實際上有兩種List:
一種是基本的ArrayList,其優(yōu)點在于隨機訪問元素
另一種是LinkedList,它并不是為快速隨機訪問設(shè)計的,而是快速的插入或刪除。
ArrayList:由數(shù)組實現(xiàn)的List。允許對元素進(jìn)行快速隨機訪問,但是向List中間插入與移除元素的速度很慢。
LinkedList :對順序訪問進(jìn)行了優(yōu)化,向List中間插入與刪除的開銷并不大。隨機訪問則相對較慢。 還具有下列方法:addFirst(), addLast(), getFirst(), getLast(), removeFirst() 和 removeLast(), 這些方法 (沒有在任何接口或基類中定義過)使得LinkedList可以當(dāng)作堆棧、隊列和雙向隊列使用。
2. Set簡介
Set具有與Collection完全一樣的接口,因此沒有任何額外的功能。實際上Set就是Collection,只是行為不同。
這是繼承與多態(tài)思想的典型應(yīng)用:表現(xiàn)不同的行為。Set不保存重復(fù)的元素(至于如何判斷元素相同則較為負(fù)責(zé))
Set : 存入Set的每個元素都必須是唯一的,因為Set不保存重復(fù)元素。加入Set的元素必須定義equals()方法以確保對象的唯一性。
Set與Collection有完全一樣的接口。Set接口不保證維護元素的次序。
HashSet:為快速查找設(shè)計的Set。存入HashSet的對象必須定義hashCode()。
TreeSet: 保存次序的Set, 底層為樹結(jié)構(gòu)。使用它可以從Set中提取有序的序列。
3. list與Set區(qū)別
① List,Set都是繼承自Collection接口;
?、?List特點:元素有放入順序,元素可重復(fù) ,Set特點:元素?zé)o放入順序,元素不可重復(fù),重復(fù)元素會覆蓋掉,元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的,加入Set 的Object必須定義equals()方法 ,另外list支持for循環(huán),也就是通過下標(biāo)來遍歷,也可以用迭代器,但是set只能用迭代,因為他無序,無法用下標(biāo)來取得想要的值。
?、?Set和List對比: Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。 List:和數(shù)組類似,List可以動態(tài)增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。