首頁 >Java >Java基礎 >java中HashMap和LinkedHashMap的區別

java中HashMap和LinkedHashMap的區別

王林
王林原創
2019-11-18 14:19:345375瀏覽

java中HashMap和LinkedHashMap的區別

HashMap

hashMap是最常用的Map,根據鍵的HashCode值儲存數據,可以根據鍵直接取得它的值,具有很快的訪問速度,遍歷時候的順序是完全隨機的。 HashMap只允許一個鍵為Null,允許多個值為Null。

特性: 完全隨機

優點: 隨機訪問,取值速度快

缺點: 多個執行緒同時寫HashMap可能導致資料不一致,如果需要同步,使用Collection的synchronizedMap方法或使用ConcurrentHashMap

##LinkedHashMap##LinkedHashMap是HashMap的子類,保存了記錄的插入順序,與HashMap的隨機遍歷不同,在用Iterator遍歷的時候,先得到的記錄肯定是先插入的,類似python中的OrderedDict。

遍歷速度會比HashMap慢,不過有一種情況例外: 當HashMap的容量很大,實際資料很少時, 因為HashMap的遍歷速度和它的容量有關,而LinkedHashMap只跟實際資料量有關。

TreeMap

TreeMap實作SortMap接口,能夠將它保存的記錄按鍵排序,預設是按鍵的升序排列,也可以指定排序的比較器,遍歷TreeMap的時候,得到的記錄是依照鍵排過序的。

根據資料選擇Map

一般情況下,我們用的最多的是HashMap,在Map中插入、刪除和定位元素,HashMap 是最好的選擇。但如果您要按自然順序或自訂順序遍歷鍵,那麼TreeMap會更好。如果需要輸出的順序和輸入的相同,那麼用LinkedHashMap可以實現,它還可以按讀取順序來排列。

推薦教學:

Java教學

以上是java中HashMap和LinkedHashMap的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn