Map和Collection的區(qū)別?
Collection接口,包含list和set子接口Collection和Map接口之間的主要區(qū)別在于:Collection中存儲(chǔ)了一組對(duì)象,而Map存儲(chǔ)關(guān)鍵字/值對(duì)。
在Map對(duì)象中,每一個(gè)關(guān)鍵字最多有一個(gè)關(guān)聯(lián)的值。
Map:不能包括兩個(gè)相同的鍵,一個(gè)鍵最多能綁定一個(gè)值。
null可以作為鍵,這樣的鍵只有一個(gè);可以有一個(gè)或多個(gè)鍵所對(duì)應(yīng)的值為null。
當(dāng)get()方法返回null值時(shí),即可以表示Map中沒有該鍵,也可以表示該鍵所對(duì)應(yīng)的值為null。
因此,在Map中不能由get()方法來判斷Map中是否存在某個(gè)鍵,而應(yīng)該用containsKey()方法來判斷。
繼承Map的類有:HashMap,HashTableHashMap:Map的實(shí)現(xiàn)類,缺省情況下是非同步的,可以通過Map Collections.synchronizedMap(Map m)來達(dá)到線程同步HashTable:Dictionary的子類,確省是線程同步的。不允許關(guān)鍵字或值為null當(dāng)元素的順序很重要時(shí)選用TreeMap,當(dāng)元素不必以特定的順序進(jìn)行存儲(chǔ)時(shí),使用HashMap。
Hashtable的使用不被推薦,因?yàn)镠ashMap提供了所有類似的功能,并且速度更快。
當(dāng)你需要在多線程環(huán)境下使用時(shí),HashMap也可以轉(zhuǎn)換為同步的。