今天看到一个小的题目,人家实现的很好,写出来大家共享
需要如下:
实现字符串“thinkinginjavaisaveryusefullbook”输出字母次数统计
想要的结果:a(3)b(1)e(2)…
String str ="thinkinginjavaisaveryusefullbook";
char[] ch = str.toCharArray(); // 转数组
Map<Character, Integer> map = new TreeMap<Character,Integer>();
for (int i = 0; i < ch.length; i++) {
Integer value = map.get(ch[i]);
if (value==null) {
map.put(ch[i],1);
} else {
value += 1; // 有相同,则加一
map.put(ch[i],value);
}
}
StringBuilder sb = new StringBuilder();
Iterator<Entry<Character, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) { // 遍历map
Entry<Character, Integer> en = it.next();
Character key = en.getKey();
Integer value = en.getValue();
sb.append(key+"("+value+")");
}
System.out.println(sb);
输出结果:
a(3)b(1)e(2)f(1)g(1)h(1)i(4)j(1)k(2)l(2)n(3)o(2)r(1)s(2)t(1)u(2)v(2)y(1)
若用HashMap,
输出结果:
f(1)g(1)e(2)b(1)a(3)n(3)o(2)l(2)j(1)k(2)h(1)i(4)v(2)u(2)t(1)s(2)r(1)y(1)