当我使用toString()
时,我在java中得到了一个带有以下输出的hashMap {to=3, but=2, said=1, hid=1, Newton=6, by=1, eyes=2, of=2, meter=3, hide=1, his=1, on=1, drew=1, Einstein=5,......}
我的hashMap具有以下语法:<String, Integer>
现在我想这样排序:
6: Newton
6: and
5: Einstein
3: Pascal
3: found
3: meter
3: one
3: to
2: a , ....
这意味着我必须按整数值排序。也是&#34;风格&#34;输出应该如上所示。任何人都可以帮助我,明天我会参加考试:D
答案 0 :(得分:2)
看起来您想要按地图对其值进行排序。我不认为有任何地图实现可以做到这一点。 TreeMap维护按键排序,但不会帮助你。
因此,您必须编写自己的方法来获取地图的条目(使用entrySet()
),按值(以及相同值的键)对它们进行排序,以及无论你喜欢打印它们。
答案 1 :(得分:1)
通常,“对HashMap进行排序”的方法是将键,值或条目集合复制到数组中,然后对数组进行排序;例如使用Arrays.sort
方法之一
在您的情况下,您希望使用HashMap.entrySet()
提取Comparator
方法提供的集合,该Map<K,V>.Entry
按值排序Arrays.toString
个对象,然后按键排序。
打印已排序条目的简单方法是使用循环。 (我认为Object.toString
不适用,因为Map实现通常不会覆盖{{1}}方法。至少,javadoc没有这么说......)
答案 2 :(得分:0)
使用准备好的地图简单实现这个.. !!!
Set<Entry<String,Integer>> s=yourmap.entrySet();
List<Entry<String,Integer>> l=new ArrayList<Entry<String,Integer>>(s);
Collections.sort(l,new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> arg0,
Entry<String, Integer> arg1) {
return (arg1.getValue().compareTo(arg0.getValue()));
}
});
for(Map.Entry<String, Integer> entry:l){
System.out.println("Key== "+entry.getKey()+" value= in Increasing Order=="+entry.getValue());
}
我希望这符合您的要求
答案 3 :(得分:0)
我们无法在HashMap中的KEY OR VALUES上实现排序。
java仅提供使用它的键对值进行排序。在java中,我们可以使用TreeMap对MAP的键进行排序。
TreeMap仅提供对键进行排序的工具..