统计字符串中每个字符出现的次数(Map集合)
程序员文章站
2022-04-18 09:22:23
...
/*
* 需求:输入字符串“asbdajkdbsajbdfdfdss”
*
* 输出:a(3)b(3)d(5)f(2)j(2)k(1)s(4)
*
* 分析:
* A:定义一个字符串
* B:定义TreeMap集合
* 键(key):Character
* 值(value):Integer
* C:把字符串转化成字符串数组
* D:遍历字符数组,得到每一个字符
* E:拿刚才得到的字符去集合中找值,看返回值
* 是null:说明这个字符还没有存入集合,添加键值对(“字符”,1);
* 不是null:说明这个字符已经存入,修改value,(“字符”,value+1);
* F:定义字符串缓冲区变量
* G:遍历集合,得到键和值,进行按照要求拼接
* H:把字符串缓冲区转化成字符串输出
*/
代码实现:
import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;
public class Test1 {
public static void main(String[] args) {
//定义一个字符串
Scanner sc=new Scanner(System.in);
//定义TreeMap集合
//由于要求输出是需要字符串按照自然顺序输出,所以使用TreeMap集合比较好
TreeMap<Character, Integer> map=new TreeMap<Character, Integer>();
System.out.println("请输入字符串:");
//输入一个字符串
String s=sc.nextLine();
char[] array=s.toCharArray();
//遍历字符串
for(char ch:array) {
//拿刚才得到的字符去集合中找值,看返回值(注意:这里i要定义成Integer类型,而不能定义成int类型)
Integer i=map.get(ch);
//是null:说明这个字符还没有存入集合,添加键值对(“字符”,1);
if(i==null) {
map.put(ch, 1);
}
//不是null:说明这个字符已经存入,修改value,(“字符”,value+1);
else {
map.put(ch, i+1);
}
}
//定义字符串缓冲区变量
StringBuilder sb=new StringBuilder();
//遍历集合,得到键和值,进行按照要求拼接
Set<Character> mapkey=map.keySet();
for(Character c:mapkey) {
Integer value=map.get(c);
sb.append(c).append("(").append(value).append(")");
}
String result=sb.toString();
System.out.println("reault:"+result);
}
}
输入:asbdajkdbsajbdfdfdss
输出:a(3)b(3)d(5)f(2)j(2)k(1)s(4)
主要考察到对TreeMap集合以及HashMap集合特点的了解、 字符串缓冲区的使用。
上一篇: 用python做数据分析