/** * @Description 词频统计并按照词频排序的问题 * 新知识点 * Collections.sort(list,(a,b) -> map.get(b) - map.get(a)); * 把List里的元素,按照一个指定的规则,从大到小排序,就是b - a * @Date 2022/1/12 11:17 下午 * @Author wuqichuan@zuoyebang.com **/public class Solution { public String frequencySort(String s) { Map<Character,Integer> map = new HashMap<>(); for(int i = 0; i < s.length(); i++){ int f = 0; f = map.getOrDefault(s.charAt(i),0) + 1; map.put(s.charAt(i),f); } List<Character> list = new ArrayList<Character>(map.keySet()); Collections.sort(list,(a,b) -> map.get(b) - map.get(a)); StringBuffer sb = new StringBuffer(); for(Character c : list){ Integer f = map.get(c); for(int i = 0; i <f; i++){ sb.append(c); } } return sb.toString(); }}