2017-07-07 55 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从地图,并尝试通过使用创建比较根据您的需要进行分类。当它被分类时,只需创建一个新的地图实例,并将已排序的集合迭代到地图中。它有点昂贵,但你需要做什么。

如果您发现实施此问题的任何问题。告诉我,我会给你的代码。 :)