尊敬的, 我有一个哈希映射,其中我保存了值:歌手(字符串)和流行度(整数)。
现在,我希望根据受欢迎程度订购此哈希地图。
如何在java中做到这一点?
答案 0 :(得分:2)
HashMaps可以(按设计)不订购。如果您需要有序地图,请使用TreeMap。
答案 1 :(得分:2)
我假设你将歌手作为一个关键词,以及歌手的受欢迎程度作为价值。 HashMap没有排序,TreeMap按键排序,而不是按值排序,所以它没有帮助。
如果您需要按流行度排序的歌手,请在地图中创建一个包含所有歌手的列表,然后使用比较器对该列表进行排序,比较两位歌手的受欢迎程度:
List<String> singers = new ArrayList<String>(map.keySet());
Collections.sort(singers, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
Integer popularity1 = map.get(s1);
Integer popularity2 = map.get(s2);
return popularity1.compareTo(popularity2);
}
});
答案 2 :(得分:1)
您无法控制HashMap元素的顺序。制作一个新的TreeMap<Integer,List<String>>
并将数据复制到其中。使用List<String>
来涵盖重复int值的情况。