// 需求:"cbxzbvavdvgd"获取字符串中,每一个字母出现次数:a(1)b(2)c(1)d(2)g(1)v(3)x(1)z(1)
public class TreeMapTest {
public static void main(String[] args) {
String str = "cbxzbvavdvgd";
// 写一个功能,完成每个字符数据的统计
TreeMap<Character, Integer> tm = stringToTreeMap(str);
// 把TreeMap变成字符串
String s = treeMapToString(tm);
System.out.println(s);
}
// 把TreeMap变成字符串
private static String treeMapToString(TreeMap<Character, Integer> tm) {
StringBuilder sb = new StringBuilder();
Set<Character> set = tm.keySet();
Iterator<Character> it = set.iterator();
while (it.hasNext()) {
Character key = it.next();
Integer value = tm.get(key);
sb.append(key).append("(").append(value).append(")");
}
return sb.toString();
}
// 把字符串变成TreeMap
private static TreeMap<Character, Integer> stringToTreeMap(String str) {
TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
// 遍历字符串,获取每个字符
for (int x = 0; x < str.length(); x++) {
// 获取每个字符值
char ch = str.charAt(x);
Integer i = tm.get(ch); // 自动装箱
// 如果没有数据,那么, 返回的是null,返回null的时候,我们就把该字符存入Map中
if (i == null) {
tm.put(ch, 1);
} else {
// 有数据
i++; // 先拆箱,在装箱
tm.put(ch, i);
}
}
return tm;
}
}
|