2017-07-07 54 views
-1

排序散列映射(decending)我要排序此HashMap我想在Java

HashMap<Integer,Integer> hp=new HashMap<Integer,Integer>(); 

TreeMap<Integer,Integer> stm = new TreeMap<Integer,Integer>(); 
stm.putAll(hp); 

在值反向排序。

如果值相同,我將使用鍵作爲下一個條件。 價值是相反的,但關鍵不是。

+1

HashMap不支持排序,所以你不能排序哈希映射本身的條目。 – Korashen

+1

您無法對HashMap進行排序,但有排序的地圖。見https://stackoverflow.com/questions/2889777/difference-between-hashmap-linkedhashmap-and-treemap – Alexander

+0

到目前爲止,你有什麼嘗試? –

回答

0

我們可以通過引用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

0

你爲什麼不拿到的entrySet從地圖,並嘗試通過使用創建比較根據您的需要進行分類。當它被分類時,只需創建一個新的地圖實例,並將已排序的集合迭代到地圖中。它有點昂貴,但你需要做什麼。

如果您發現實施此問題的任何問題。告訴我,我會給你的代碼。 :)