Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java HashMap排序<;字符串,整数>。如何分类?_Java_Sorting_Hashmap - Fatal编程技术网

java HashMap排序<;字符串,整数>。如何分类?

java HashMap排序<;字符串,整数>。如何分类?,java,sorting,hashmap,Java,Sorting,Hashmap,可能重复: 在我的项目中,我采用了这样的HashMap HashMap degree=newhashmap() 假设我有: 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} 我怎样才能做到这一

可能重复:

在我的项目中,我采用了这样的HashMap

HashMap degree=newhashmap()

假设我有:

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}


我怎样才能做到这一点?

A
HashMap
是一个无序的集合。它没有排序顺序。即使是
TreeMap
也将按键排序,而不是按值排序


如果要按值的排序顺序准备排序列表,则必须创建一个适当的对象,例如
ArrayList
,在
HashMap
上迭代并插入所有条目,然后使用排序函数调用
Collections.sort
,HashMap不是最好的方法

我建议在排序时查看
TreeMap
。您可以将比较器设置为比较值,而不是键,如此答案中所示:

您可以从原始hashmap构建一个新的hashmap(占用x2内存,效率非常低)。因此,您需要使用hashmap的.get()和.set()方法将近n*n(最坏情况)次,其中n是元素数;
ArrayList<Integer> sortedHashMap=new ArrayList<Integer>();

for("your Object" m : degree.values())
{
      sortedHashMap.add(m);
}

collections.sort(sortedHashMap);
对于(“您的对象”m:degree.values()) { 添加(m); } 收集.分类(分类地图);
因此,您可以将hashMap打印为已排序的hashMap

在我看来,根据整数值排序的原始HashMap实际上类似于{a=5,f=5,c=4,e=3,b=2,d=2}。检查这个,如果它正在查看值,最好不要在树映射上调用.get()。