欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

对map进行排序-按字符出现次数 排序

程序员文章站 2022-07-09 19:17:37
package nowcode.test;import java.util.*;public class Testl { //按字符出现次数 排序 public static void main(String[] args) { System.out.println(frequencySort("taeeaaa")); } public static String frequencySort (String s) { // wri....
package nowcode.test;

import java.util.*;

public class Testl {

    //按字符出现次数 排序
    public static void main(String[] args) {
        System.out.println(frequencySort("taeeaaa"));
    }

    public static String frequencySort (String s) {
        // write code here
        Map<Character,Integer> mymap=new HashMap<>();
        for(int i=0;i<s.length();i++){
            mymap.put(s.charAt(i),mymap.getOrDefault(s.charAt(i),0)+1);
        }
        //转换为List
        List<Map.Entry<Character,Integer>> mylist=new ArrayList<>(mymap.entrySet());
        //给list排序
        Collections.sort(mylist,((o1, o2) -> (o2.getValue()-o1.getValue())));

        StringBuilder sb=new StringBuilder();
        //从list把map entry依次取出
        for(Map.Entry<Character,Integer> entry:mylist){
            for (int i = 0; i <entry.getValue() ; i++) {
                sb.append(entry.getKey());
            }
        }
        return sb.toString();
    }
} 
相关标签: Java 排序