set就是集,無序,不可重複
舉例:hashset,linkedhashset
map是對映,通過鍵值對儲存,無序,不可重複
舉例:hashmap,hashtable,linkedhashmap
在實際的使用過程中,list常用來處理序列,set用來處理集合,map用來處理鍵對值的資料。
linkedhashmap和hashmap的比較使用
j**a為資料結構中的對映定義了乙個介面j**a.util.map;它有四個實現類,分別是hashmap hashtable linkedhashmap 和treemap.
map主要用於儲存健值對,根據鍵得到值,因此不允許鍵重複(重複了覆蓋了),但允許值重複。
hashmap
是乙個最常用的map,它根據鍵的hashcode值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得資料的順序是完全隨機的。
hashmap最多隻允許一條記錄的鍵為null;允許多條記錄的值為
null;hashmap不支援執行緒的同步,即任一時刻可以有多個執行緒同時寫hashmap;可能會導致資料的不一致。如果需要同步,可以用
collections的synchronizedmap方法使hashmap具有同步的能力,或者使用concurrenthashmap。
hashtable與 hashmap類似,它繼承自dictionary類,不同的是:它不允許記錄的鍵或者值為空;它支援執行緒的同步,即任一時刻只有乙個執行緒能寫hashtable,因此也導致了 hashtable在寫入時會比較慢。
linkedhashmap
是hashmap的乙個子類,儲存了記錄的插入順序,在用iterator遍歷linkedhashmap時,先得到的記錄肯定是先插入的.也可以在構造
時用帶引數,按照應用次數排序。在遍歷的時候會比hashmap慢,不過有種情況例外,當hashmap容量很大,實際資料較少時,遍歷起來可能會比
linkedhashmap慢,因為linkedhashmap的遍歷速度只和實際資料有關,和容量無關,而hashmap的遍歷速度和他的容量有關。
treemap實現sortmap介面,能夠把它儲存的記錄根據鍵排序,預設是按鍵值的公升序排序,也可以指定排序的比較器,當用iterator 遍歷treemap時,得到的記錄是排過序的。
一般情況下,我們用的最多的是hashmap,在map 中插入、刪除和定位元素,hashmap
是最好的選擇。但如果您要按自然順序或自定義順序遍歷鍵,那麼treemap會更好。如果需要輸出的順序和輸入的相同,那麼用linkedhashmap
可以實現,它還可以按讀取順序來排列.
Map相關知識總結
map主要用於儲存健值對,根據鍵得到值,因此不允許鍵重複 重複了覆蓋了 但允許值重複。hashmap 是乙個最常用的map,它根據鍵的hashcode 值儲存資料,根據鍵可以直接獲取它的值,具有很快的訪問速度,遍歷時,取得資料的順序是完全隨機的。hashmap最多隻允許一條記錄的鍵為null 允許多...
STL 中map 和 set 的知識點總結
stl中的容器有順序容器 vector,list,deque 關聯容器 map,set 還有一些其他容器。根據不同的場合選擇不同的容器,會有意想不到的收穫。set是單詞set 集合 的意思 map和set內部的元素不可以重複,這一點不同於multimap和multiset。map 和 set使用相同...
Set和Map的小知識
hashset,hashmap查詢快 treeset,treemap儲存順序為公升序 linkedhashset,linkedhashmap 儲存順序為插入的順序 hashset的部分原始碼 構造器初始化這個map private transient hashmapmap set中組合了乙個map的...