我是Java的新手,经常发现我需要对Map<Key, Value>值进行排序.
由于值不是唯一的,我发现自己将其转换keySet为a array,并通过数组排序对该数组进行排序,并使用自定义比较器对与键关联的值进行排序.
有没有更简单的方法?
我有一张地图:TreeMap<String, Integer> m = new TreeMap<>();我有一个完整的字母和值,显示我的文字中每个字母的次数.
我想按递减计数顺序对该地图进行排序; 也就是说,最常见的字母在第一行,最后一行表示最不频繁的字母.如果两个字母具有相同的频率,那么字母表中首先出现的字母必须首先出现.怎么做?
我试过Comparator:
public int compare(String a, String b) {
if (base.get(a) >= base.get(b) && a.compareToIgnoreCase(b) < 0) {
return -1;
} else {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
但仍然,不是它,输出是:
D 3
E 3
A 2
S 5
Run Code Online (Sandbox Code Playgroud)
伙计们......之前发现这个,这根本没有帮助.好的输出应该是:
S 5
D 3
E 3
A 2
Run Code Online (Sandbox Code Playgroud)