map是鍵值對的集合介面,他的實現類只要包括:hashmap,treemap,hashtable以及linkedhashmap等.其中這四個的區別簡單介紹如下:
hashmap
最常用的map,他根據key的hashcode值來儲存資料,根據key可以直接獲取他的value,同時它具有很快的訪問速度..hashmap最多隻允許一條記錄的key值為null,允許多條記錄的value為null.
treemap
能夠把他儲存的資料按key值預設公升序排序,也可以指定排序的比較器.,用iterator遍歷treemap時,得到的記錄是排序過的.不允許key的值為null.
hashtable
與hashmap類似,不同的是:key和value的值不允許為null,它支援執行緒的同步,乙個時刻只能有乙個執行緒寫hashtable,因為在寫入時會比較慢.
linkedhashmap
儲存了記錄的插入順序,在用iterator遍歷linkedhashmap時,先得到的記錄是先插入的,在遍歷的時候會比hashmap慢,key和value均允許為空.
treemap
預設是排序的,所有如果要是改變排序方式,需要借用比較器:comparator.
comprator可以對集合物件或者陣列進行排序的比較器介面,實現該介面的public compare(t o1,t o2)方法即可實現排序,主要是根據第乙個引數,小於等於大於第二個引數分別返回負整數,0,正整數.
public
class treemaptest
});map.put("c", "ccccc");
map.put("a", "aaaaa");
map.put("b", "bbbbb");
map.put("d", "ddddd");
setkeyset = map.keyset();
iteratoriter = keyset.iterator();
while (iter.hasnext())
}}
執行結果如下:
d:ddddd
c:ccccc
b:bbbbb
a:aaaaa
上面例子是對根據treemap的key值來進行排序的,但是有時我們需要根據treemap的value來進行排序。對value排序我們就需要借助於collections的sort(list list, comparator
public class treemaptest
});}
}}
執行結果
a:aaaaa
b:bbbbb
c:ccccc
d:ddddd
hashmap
我們都是hashmap的值是沒有順序的,他是按照key的hashcode來實現的。對於這個無序的hashmap我們要怎麼來實現排序呢?參照treemap的value排序,我們一樣的也可以實現hashmap的排序。
public class hashmaptest
});}
}}
執行結果
a:aaaaa
b:bbbbb
c:ccccc
d:ddddd
如果o2在前就是降序. HashMap按鍵排序和按值排序
今天做統計時需要對x軸的地區按照地區 areacode 進行排序,由於在構建xmldata使用的map來進行資料統計的,所以在統計過程中就需要對map進行排序。在講解map排序之前,我們先來稍微了解下map。map是鍵值對的集合介面,它的實現類主要包括 hashmap,treemap,hashtab...
HashMap按鍵排序和按值排序
在講解map排序之前,我們先來稍微了解下map。map是鍵值對的集合介面,它的實現類主要包括 hashmap,treemap,hashtable以及linkedhashmap等。其中這四者的區別如下 簡單介紹 hashmap 我們最常用的map,它根據key的hashcode 值來儲存資料,根據ke...
HashMap按鍵排序和按值排序
今天做統計時需要對x軸的地區按照地區 areacode 進行排序,由於在構建xmldata使用的map來進行資料統計的,所以在統計過程中就需要對map進行排序。在講解map排序之前,我們先來稍微了解下map。map是鍵值對的集合介面,它的實現類主要包括 hashmap,treemap,hashtab...