Java常用集合為List,Set和Map商玫,其中List和Set都實現(xiàn)了Collection接口,而Map并沒有
java.util
Interface Map
將鍵映射到值的對象牡借。Map不能包含重復的鍵,每個鍵可以映射到最多一個值拳昌。
實現(xiàn)Map接口的常見類:
常用方法
將指定的值與該映射中的指定鍵相關(guān)聯(lián)(可選操作)。
如果存在(從可選的操作)钠龙,從該Map中刪除一個鍵的映射炬藤。
default booleanremove(Objectkey,Objectvalue)
僅當指定的key當前映射到指定的值時刪除該條目御铃。
intsize()
返回此映射中鍵值映射的數(shù)量。
只有當目標映射到某個值時沈矿,才能替換指定鍵的條目上真。
HashMap,Hashtable,TreeMap三者的區(qū)別
Hashmap 是一個最常用的Map,它根據(jù)鍵的HashCode 值存儲數(shù)據(jù)细睡,根據(jù)鍵可以直接獲取它的值谷羞,具有很快的訪問速度。
HashMap最多只允許一條記錄的鍵為Null溜徙,允許多條記錄的值為Null。
HashMap不支持線程的同步犀填,即任一時刻可以有多個線程同時寫HashMap蠢壹,可能會導致數(shù)據(jù)的不一致。如果需要同步九巡,可以用Collections的synchronizedMap方法使HashMap具有同步的能力图贸。
HashTable的方法是同步的
HashTable不允許null值,key和value都不可以
HashTable有一個contains(Object?value)功能和containsValue(Object?value)功能一樣冕广。
HashTable使用Enumeration疏日,HashMap使用Iterator。
HashTable中hash數(shù)組默認大小是11撒汉,增加的方式是?old*2+1沟优。HashMap中hash數(shù)組的默認大小是16,而且一定是2的指數(shù)睬辐。
哈希值的使用不同挠阁,HashTable直接使用對象的hashCode。
TreeMap能夠把它保存的記錄根據(jù)鍵排序,默認是按升序排序溯饵,也可以指定排序的比較器侵俗,當用Iterator 遍歷TreeMap時,得到的記錄是排過序的丰刊。