根据题目要求,本题可运用Map集合中的TreeMap集合来实现。
分析:根据Map集合的特点(键是惟一的,值是可重复的),可以用键来存储每一个字母,然后用对应的值来存储该字母出现的次数,最后遍历集合,转换成相应的字符串格式输出即可。
完整代码加解析如下:
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class TreeMapDemo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串数据:");
String line = sc.nextLine();
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>(); //创建TreeMap集合
char[] chs = line.toCharArray(); //将字符串转为字符数组
for (char ch : chs) { //遍历字符数组
Integer i = tm.get(ch); //获取集合中字符键的对应值
if (i == null) {
tm.put(ch, 1); //如果返回值为空,添加字符键,并将对应值设为1
} else {
tm.put(ch, ++i); //如果值不为空,将对应值加1
}
}
StringBuilder sb = new StringBuilder();
Set<Character> s = tm.keySet(); //将TreeMap集合中所有键存到Set集合
for (Character key : s) {
Integer value = tm.get(key); //获取每个键的对应值
sb.append(key).append("(").append(value).append(")"); //将值添加到StringBuilder
}
String result = sb.toString(); //将StringBuilder转为String类型
System.out.println("result:" + result);
}
}