参考答案:
package com.qzcsbj; import java.util.*; public class Test { public static void main(String[] args) { System.out.print("请输入一个字符串:"); Scanner sc = new Scanner(System.in); String str = sc.nextLine(); Map<String, Integer> map = new HashMap<String, Integer>(); for (int i = 0; i < str.length(); i++) { String c = str.charAt(i) + ""; map.put(c, map.containsKey(c) ? map.get(c) + 1 : 1); } Set<Map.Entry<String, Integer>> entries = map.entrySet(); ArrayList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(entries); Collections.sort(list,new Comparator<Map.Entry<String, Integer>>() { // 匿名内部类 @Override public int compare(Map.Entry<String, Integer> obj1, Map.Entry<String, Integer> obj2) { if(obj1.getValue() > obj2.getValue()){ return -1; }else if(obj1.getValue() < obj2.getValue()){ return 1; } return 0; } }); int len = list.size(); if(len<2){ System.out.println("字符串中只出现了" + len + "种字符"); for(int i=0;i<len;i++){ Map.Entry<String, Integer> entry = list.get(i); if (" ".equals(entry.getKey())){ System.out.println("空格="+entry.getValue()); }else { System.out.println(entry.getKey()+"="+entry.getValue()); } } } else { System.out.println("出现次数最多的前2:"); for(int i=0;i<2;i++){ Map.Entry<String, Integer> entry = list.get(i); if (" ".equals(entry.getKey())){ System.out.println("空格="+entry.getValue()); }else { System.out.println(entry.getKey()+"="+entry.getValue()); } } } } }