import java.util.Set; import java.util.TreeMap; /* * "cbxzbvavdvgd"获取字符串中,每一个字母出现次数:"a(1)b(2)c(1)d(2)g(1)v(3)x(1)z(1)" * 思路: * A:把字符串变成字符数组。 * B:定义一个TreeMap集合。Character做键,Integer做值。 * C:遍历字符数组,获取到每一个字符。 * D:拿到该字符,到TreeMap集合中找对应的值 * E:根据返回值是否为null * 是:存储,把次数记录为1 * 否:把数据++,然后重写存储 * F:把TreeMap的数据拼接成一个字符串。 */ public class TreeMapDemo { public static void main(String[] args) { String s = "cbxzbvavdvgd"; // 把字符串变成字符数组。 char[] chs = s.toCharArray(); // 定义一个TreeMap集合。Character做键,Integer做值。 TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>(); // 遍历字符数组,获取到每一个字符。 for (Character ch : chs) { // 拿到该字符,到TreeMap集合中找对应的值 Integer i = tm.get(ch); // 根据返回值是否为null // 是:存储,把次数记录为1 // 否:把数据++,然后重写存储 if (i == null) { tm.put(ch, 1); } else { i++; tm.put(ch, i); } } // System.out.println(tm); // 把TreeMap的数据拼接成一个字符串。 StringBuilder sb = new StringBuilder(); Set<Character> set = tm.keySet(); for (Character ch : set) { Integer i = tm.get(ch); sb.append(ch).append("(").append(i).append(")"); } String result = sb.toString(); System.out.println(result); } }
|