根据整数命令HashMap

可能重复:
如何在Java中的值上对Map 进行排序?

亲爱的,我有一个哈希映射,其中我保存了值:歌手(字符串)和流行度(整数)。

现在,我希望根据受欢迎程度订购此哈希映射。

怎么能在java中做到这一点?

我假设你把歌手作为一把钥匙存放,而歌手的受欢迎程度作为价值。 HashMap没有排序,TreeMap按键排序,而不是按值排序,因此无济于事。

如果您需要按流行度排序的歌手,请在地图中创建一个包含所有歌手的列表,然后使用比较器对该列表进行排序,比较两位歌手的受欢迎程度:

List singers = new ArrayList(map.keySet()); Collections.sort(singers, new Comparator() { @Override public int compare(String s1, String s2) { Integer popularity1 = map.get(s1); Integer popularity2 = map.get(s2); return popularity1.compareTo(popularity2); } }); 

HashMaps可以(按设计)不订购。 如果需要有序地图,请使用TreeMap 。

您无法控制HashMap元素的顺序。 创建一个新的TreeMap>并将数据复制到它。 使用List来涵盖具有重复int值的情况。