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