按数值降序对 Hashmap 键进行排序
如何按数值对 HashMap
键进行排序?目前,按照自然顺序,它看起来像这样:
1 10 13 2 26 29
我希望它看起来像这样:
29 26 13 10 2 1
有什么想法吗?
How can I sort HashMap
keys by their numerical value? Currently, in the natural ordering it looks like this:
1 10 13 2 26 29
I want it to look like this:
29 26 13 10 2 1
Any ideas?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
HashMap
无法排序。如果您需要排序键,请查看树图
。为了获得所需的反向排序,您必须提供自定义比较器
:编辑我刚刚偶然发现
Collections.reverseOrder()< /code>
正是您想要的:它为您提供了一个
Comparator
,它可以反转实现Comparable
的对象的自然顺序。这省去了您自己编写比较器的麻烦。A
HashMap
cannot be sorted. If you require sorted keys, take a look at theTreeMap
. In order to get the reversed ordering you want, you would have to provide a customComparator
:Edit I just stumbled across
Collections.reverseOrder()
which does just what you want: It gives you aComparator
that reverses the natural ordering of objects that implementComparable
. This saves you the hassle of writing a comparator yourself.您可以使用 TreeMap ,然后调用 <其上的 href="http://docs.oracle.com/javase/6/docs/api/java/util/TreeMap.html#descendingMap()" rel="noreferrer">descendingMap()基本上返回一个相反的地图键的排序
You can use a TreeMap and then call descendingMap() on it which basically returns a map with the reverse ordering of the keys
HashMap
不会对任何内容进行排序。如果您想保留,请使用 TreeMap键已排序。HashMap
doesn't sort anything. Use a TreeMap instead if you want to keep the keys sorted.您可以将 TreeMap 与构造函数一起使用,该构造函数允许您指定一个比较器。
You could use TreeMap with the constructor that lets you specify a Comparator.
尝试下面的代码,它工作正常,并且根据顺序标志,它将升序或降序排序。
Try below code it works fine and based on order flag it will sort ascending or descending.