排序散列映射(decending)我要排序此HashMap
:我想在Java
HashMap<Integer,Integer> hp=new HashMap<Integer,Integer>();
TreeMap<Integer,Integer> stm = new TreeMap<Integer,Integer>();
stm.putAll(hp);
在值反向排序。
如果值相同,我將使用鍵作爲下一個條件。 價值是相反的,但關鍵不是。
排序散列映射(decending)我要排序此HashMap
:我想在Java
HashMap<Integer,Integer> hp=new HashMap<Integer,Integer>();
TreeMap<Integer,Integer> stm = new TreeMap<Integer,Integer>();
stm.putAll(hp);
在值反向排序。
如果值相同,我將使用鍵作爲下一個條件。 價值是相反的,但關鍵不是。
我們可以通過引用TreeMap的值排序來實現這種HashMap。 我試着寫一個樣本與你分享。
public class HashMapTest {
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("c", "ccccc");
map.put("a", "aaaaa");
map.put("b", "bbbbb");
map.put("d", "ddddd");
List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
//Ascending order
public int compare(Entry<String, String> o1,
Entry<String, String> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
for(Map.Entry<String,String> mapping:list){
System.out.println(mapping.getKey()+":"+mapping.getValue());
}
}
的resule是
一個:AAAAA
B:BBBBB
C:CCCCC
d:DDDDD
你爲什麼不拿到的entrySet從地圖,並嘗試通過使用創建比較根據您的需要進行分類。當它被分類時,只需創建一個新的地圖實例,並將已排序的集合迭代到地圖中。它有點昂貴,但你需要做什麼。
如果您發現實施此問題的任何問題。告訴我,我會給你的代碼。 :)
HashMap不支持排序,所以你不能排序哈希映射本身的條目。 – Korashen
您無法對HashMap進行排序,但有排序的地圖。見https://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap – Alexander
到目前爲止,你有什麼嘗試? –