map是鍵值對的集合介面,它的實現類主要包括:hashmap,treemap,hashtable以及linkedhashmap等
hashmap:我們最常用的map,它根據key的hashcode 值來儲存資料,根據key可以直接獲取它的value,同時它具有很快的訪問速度。hashmap最多隻允許一條記錄的key值為null(多條會覆蓋);允許多條記錄的value為 null。非同步的。
原始碼分析:
1、hashmap 是按照 hash演算法(位移)求得hash值進行的離散儲存,因而決定了它是無序的
2、hashmap的擴容,在新增資料put時,當容量大於等0.75時,進行擴容;並且是2倍的擴容
3、hashmap 鍵值可以為null
4、hashmap 的key相同時,不是覆蓋,key是舊的key 還是以前的hash值儲存位置,而value則是替換新的。在put時會返回舊的value
treemap: 能夠把它儲存的記錄根據key排序,預設是按公升序排序,也可以指定排序的比較器,當用iterator 遍歷treemap時,得到的記錄是排過序的。treemap不允許key的值為null。非同步的。
hashtable: 與 hashmap類似,不同的是:key和value的值均不允許為null;它支援執行緒的同步,即任一時刻只有乙個執行緒能寫hashtable,因此也導致了hashtale在寫入時會比較慢。
linkedhashmap: 儲存了記錄的插入順序,在用iterator遍歷linkedhashmap時,先得到的記錄肯定是先插入的.在遍歷的時候會比hashmap慢。key和value均允許為空,非同步的。
對於排序,可以根據實現不同的介面,也可以自定義介面寫排序,
如下是hashmap排序實現:
publicclass
hashmaptest
});}
}}
執行結果:
a:aaaaa
b:bbbbb
c:ccccc
d:ddddd
常用map的操作和map集合排序
在講解map排序之前,我們先來稍微了解下map。map是鍵值對的集合介面,它的實現類主要包括 hashmap,treemap,hashtable以及linkedhashmap等。其中這四者的區別如下 簡單介紹 1.hashmap 我們最常用的map,它根據key的hashcode 值來儲存資料,根據...
對map集合進行排序
在講解map排序之前,我們先來稍微了解下map。map是鍵值對的集合介面,它的實現類主要包括 hashmap treemap hashtable linkedhashmap。其中這四者的區別如下 簡單介紹 hashmap 我們最常用的map,它根據key的hashcode值來儲存資料,根據key可以...
對map集合進行排序
今天做統計時需要對x軸的地區按照地區 areacode 進行排序,由於在構建xmldata使用的map來進行資料統計的,所以在統計過程中就需要對map進行排序。在講解map排序之前,我們先來稍微了解下map。map是鍵值對的集合介面,它的實現類主要包括 hashmap,treemap,hashtab...