集合篇-根据字符串出现频率排序
根据字符串出现频率排序
package 根据字符串出现频率排序;import java.util.*;public class Demo01 {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.println("请输入一个字符串:");String str = scanner.nextLine();String sortStr = frequenceStr( str);System.out.println(sortStr);}public static String frequenceStr(String str){if (str == null){System.out.println("输入的字符串不能为空!");return null;}Map<Character,Integer> map = new HashMap<>();for (Character c: str.toCharArray()){if(!map.containsKey(c)){map.put(c, 1);}else {map.put(c, map.get(c)+1);}}Set<Map.Entry<Character,Integer>> entrySet = map.entrySet();List<Map.Entry<Character,Integer>> list = new ArrayList<>(entrySet);Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>(){@Overridepublic int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {return o2.getValue().compareTo(o1.getValue());}});StringBuilder sb = new StringBuilder();for (Map.Entry<Character,Integer> entry: list){for (int i = 0; i < entry.getValue(); i++){sb.append(entry.getKey());}}return sb.toString();}
}
测试: