一、Set集合
其主要實現(xiàn)類有HashSet瘩扼、TreeSet。存放對象的引用垃僚,不允許有重復(fù)對象集绰。
- 子類對象HashSet
調(diào)用對象的hashCode()方法,獲得哈希碼谆棺,然后再集合中計算存放對象的位置栽燕。通過比較哈希碼與equals()方法來判別是否重復(fù)。所以改淑,重載了equals()方法同時也要重載hashCode()方法碍岔。
- TreeSet
繼承ShortedSet接口,能夠?qū)现袑ο笈判蚪獭DJ排序方式是自然排序付秕,但該方式只能對實現(xiàn)了Comparable接口的對象排序,java中對Integer侍郭、Byte询吴、Double、Character亮元、String等數(shù)值型和字符型對象都實現(xiàn)了該接口猛计。
如果有特殊排序,須重載該接口下的compareTo()方法或通過Comparator接口的實現(xiàn)類構(gòu)造集合爆捞。
特點:Set接口(無序并且不允許有重復(fù)對象)
二奉瘤、List集合
其主要實現(xiàn)類有LinkedList鬼吵、ArrayList嚎莉,前者實現(xiàn)了鏈表結(jié)構(gòu),后者可代表大小可變的數(shù)組。
List的特點是能夠以線性方式儲蓄對象矾麻,并允許存放重復(fù)對象。List能夠利用Collections類的靜態(tài)方法sort排序拒秘。sort(List list)自然排序;sort(List listm,Comparator codddmparator)客戶化排序渺杉。
特點:List線性集合接口(有序并且可重復(fù))
- ArrayList:動態(tài)數(shù)組[可變長度的動態(tài)數(shù)組];
- LinkedList:鏈表結(jié)構(gòu)的集合
區(qū)別:LinkedList經(jīng)常用在增刪操作較多而查詢操作很少的情況下砚偶,ArrayList則相反批销。
三、Map集合
其主要實現(xiàn)類有HashMap染坯、TreeMap均芽。Map對值沒有唯一性要求,對健要求唯一单鹿,如果加入已有的健掀宋,原有的值對象將被覆蓋。HashMap類按照哈希算法來存取鍵對象羞反,可以重載equals()布朦、hashCode()方法來比較鍵,但是兩者必須一致昼窗。TreeMap是趴,可自然排序,也可通過傳遞Comparator的實現(xiàn)類構(gòu)造TreeMap澄惊。
特點:Map鍵值對存儲結(jié)構(gòu)的集合(無序唆途。 鍵值對、鍵唯一掸驱、值不唯一)
- HashMap是最常用的Map
特點:它根據(jù)鍵的HashCode值存儲數(shù)據(jù)肛搬,根據(jù)鍵可以直接獲取它的值,具有很快的訪問速度毕贼,遍歷時温赔,取得數(shù)據(jù)的順序是完全隨機的。因為鍵對象不可以重復(fù)鬼癣,所以HashMap最多只允許一條記錄的鍵為Null陶贼,允許多條記錄的值為Null,是非同步的 - Hashtable與HashMap類似待秃,是HashMap的線程安全版拜秧,它支持線程的同步,即任一時刻只有一個線程能寫Hashtable章郁,因此也導(dǎo)致了Hashtale在寫入時會比較慢枉氮,它繼承自Dictionary類,不同的是它不允許記錄的鍵或者值為null,同時效率較低聊替。