统计字符串中各个字符的出现的次数(Map集合练习)
**
需求:
1.利用键盘录入,输入一个字符串
2.统计该字符串中各个字符的数量(提示:字符不用排序)
3.如:用户输入字符串
“Ifyou-wanttochange-your_fate_I_thinkyoumustcome-to-the-dark-horse-to-learn-java”
程序输出结果:
-(9)I(2)_(3)a(7)c(2)d(1)e(6)f(2)g(1)h(4)i(1)j(1)k(2)l(1)m(2)n(4)o(8)r(4)s(2)t(8)u(4)v(1)w(1)y(3)~(6)
提示:输出结果是排序的(TreeMap)
**
package com.yang.day07.title03;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
/**
* @author WangYang
* @version 1.0
* @create 2020-02-08 18:54
* <p>
* 1.利用键盘录入,输入一个字符串
* 2.统计该字符串中各个字符的数量(提示:字符不用排序)
* 3.如:
* 用户输入字符串
* "If~you-want~to~change-your_fate_I_think~you~must~come-to-the-dark-horse-to-learn-java"
* 程序输出结果:
* -(9)I(2)_(3)a(7)c(2)d(1)e(6)f(2)g(1)h(4)i(1)j(1)k(2)l(1)m(2)n(4)o(8)r(4)s(2)t(8)u(4)v(1)w(1)y(3)~(6)
* 提示:输出结果是排序的(TreeMap)
*/
public class Title03 {
public static void main(String[] args) {
//1.利用键盘录入,输入一个字符串
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
//接收输入的字符串
String line = scanner.nextLine();
//2.创建TreeMap 集合
TreeMap<Character, Integer> tm = new TreeMap<>();
/*
3.遍历字符串,取出每一字符,
如果tm 集合中没有改字符那么把该字符添加到tm集合的key位置,value位置赋值为1
如果tm 集合中存在改字符那么value+1;
*/
for (int i = 0; i < line.length(); i++) {
//取出每一个字符做为key
Character key = line.charAt(i);
//根据map集合的get(K key)方法获取value值
Integer value = tm.get(key);
if (tm.get(key) == null) { //如果get(key)返回的value值为null,那么该字符还没有被添加到集合
tm.put(key, 1);//该字符作为key,value值为1,添加到集合
} else { //如果get(key)反回的value值不为null,那么该字符已经出现在集合中
value++; //value值加1
tm.put(key,value); //修改该字符的value值
}
}
//遍历HashMap集合,得到键和值,按照要求进行拼接
StringBuffer sb = new StringBuffer();
//得到所有的键值对对象的集合,再进行遍历
Set<Map.Entry<Character,Integer>> entrys = tm.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
Integer value = entry.getValue();
sb.append(entry.getKey()).append("(").append(entry.getValue()).append(")");
}
System.out.println(sb.toString());
}
}
结果如下: