这个问题在这里已经有答案了:
按值对Map排序(59个答案)
5年前关门了。
我需要整理我的行李 HashMap
根据存储在其中的值。这个 HashMap
包含存储在手机中的联系人姓名。
我还需要在对值进行排序时自动对键进行排序,或者您可以说键和值绑定在一起,因此值中的任何更改都应该反映在键中。
HashMap<Integer,String> map = new HashMap<Integer,String>();
map.put(1,"froyo");
map.put(2,"abby");
map.put(3,"denver");
map.put(4,"frost");
map.put(5,"daisy");
所需输出:
2,abby;
5,daisy;
3,denver;
4,frost;
1,froyo;
12条答案
按热度按时间sdnqo3pr1#
假设使用java,可以按如下方式对hashmap进行排序:
只是一个开球的例子。这种方法更有用,因为它对hashmap进行排序并保留重复的值。
lo8azlld2#
试试下面的代码,对我来说很好。您可以选择升序和降序
编辑:版本2
使用了新的java特性,比如stream for each等
如果值相同,Map将按键排序
v7pvogib3#
在java 8中:
dffbzjpn4#
bis0qfac5#
你基本上不知道。一
HashMap
基本上是无序的。您可能在排序中看到的任何模式都不应依赖。有排序的Map,如
TreeMap
,但它们传统上是按键排序,而不是按值排序。按值排序是相对不寻常的,尤其是多个键可以具有相同的值。你能给你想做的事情提供更多的背景吗?如果您真的只存储键的数字(作为字符串),那么
SortedSet
例如TreeSet
对你有用吗?或者,您可以存储封装在单个类中的两个独立集合,以便同时更新这两个集合?
ogq8wdun6#
t0ybt7op7#
作为一种简单的解决方案,如果您只需要一个最终结果,可以使用temp treemap:
这将使您的字符串排序为sortedmap的键。
dohp0rv58#
我扩展了树Map并重写entryset()和values()方法。关键和价值需要具有可比性。
遵循以下准则:
单元测试:
deikduxw9#
找到一个解决方案,但不确定的性能,如果Map有大的大小,正常情况下有用。
zc0qhyus10#
ibrsph3r11#
ahy6op9u12#