在我的项目中,我采用了像这样的HashMap
HashMap degree = new HashMap();
假设我有:
degree.put("a",5);
degree.put("b",2);
degree.put("c",4);
degree.put("d",2);
degree.put("e",3);
degree.put("f",5);
现在我必须根据给定的整数值
对此列表进行排序
排序的HashMap应该是:
{a = 5,f = 5,c = 4,e = 4,b = 4,d = 2}
我该怎么做?
答案 0 :(得分:11)
HashMap
是无序集合。它没有排序顺序。即使TreeMap
也会按键排序,而不是值。
如果要按值的排序顺序准备排序列表,则必须创建适当的对象,例如ArrayList<Map.Entry<String,Integer>>
,迭代HashMap
并插入所有条目,然后使用整理功能调用Collections.sort
。
答案 1 :(得分:4)
如果你想要排序地图,HashMap不是最好的方法。
我建议你仔细查看TreeMap
。您可以将比较器设置为比较值而不是键,如下所示:
答案 2 :(得分:1)
ArrayList<Integer> sortedHashMap=new ArrayList<Integer>();
for("your Object" m : degree.values())
{
sortedHashMap.add(m);
}
collections.sort(sortedHashMap);
所以,您可以将hashMap打印为已排序的hashMap!
答案 3 :(得分:0)
你可以insertion sort从原始构建一个新的hashmap(占用x2内存并且效率非常低)。因此,您需要使用hashmap的.get()和.set()方法,接近n * n(最坏情况)次,其中n是元素数。