参考答案:
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());
}
}
}
}
}