我想在java中排序hashmap(降序)

时间:2017-07-07 08:45:49

标签: java hashmap

我想对此HashMap进行排序:

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

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

在价值反向排序中。

如果值相同,我将使用key作为下一个条件。 价值是相反的,但关键不是。

2 个答案:

答案 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是

a:aaaaa

b:bbbbb

c:ccccc

d:DDDDD

答案 1 :(得分:0)

为什么不从地图中获取entrySet并尝试使用根据需要创建比较器对其进行排序。当它被排序时,只需创建一个新的map实例并将已排序的集迭代到地图中。它有点贵,但做你需要的。

如果您发现任何问题,请执行此操作。告诉我,我会给你代码。 :)