哈希表按照值排序
字符串按照字符频率排序
class Solution {
public void solve(String s) {
Map<Character, Integer> map = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (map.containsKey(c)) map.put(c, map.get(c) + 1);
else map.put(c, 1);
}
map = sortByValue(map);
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
System.out.println("key: " + entry.getKey() + " value: " + entry.getValue());
}
}
public Map<Character, Integer> sortByValue(Map<Character, Integer> map) {
List<Map.Entry<Character, Integer>> list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>() {
@Override
public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
return o1.getValue().compareTo(o2.getValue());
}
});
Map<Character, Integer> res = new LinkedHashMap<>();
for (Map.Entry<Character, Integer> entry : list) {
res.put(entry.getKey(), entry.getValue());
}
return res;
}
}