参考链接:
统计字符串中每个字符出现的次数(Map集合)_咚咚锵QAQ的博客-CSDN博客_map集合统计字符次数
利用Map统计字符串中字符出现的次数_曼路的博客-CSDN博客_map统计字符串出现次数
package cn.edu.nuc.map;
import java.util.HashMap;
import java.util.Map;
public class Test2 {
/**
* 统计字符串中字符出现的次数
* 1.对字符串进行切割
* 2.遍历字符串
* 3.创建map对象,通过字符查看map中是否含有该字符
* 若有该字符,value++;否则,添加该字符,设置value为1
* 4.遍历map 查看统计结果
* @param args
*/
public static void main(String[] args) {
String str="hello tom hello jerry hello tom hello jiji hello tom";
String[] strings = str.split("\\s");
/**
* 方法一 用getOrDefault来设置map
*/
Map<String,Integer> map2 = new HashMap();
for (String string : strings) {
Integer integer = map2.getOrDefault(string, 0);
integer++;
map2.put(string, integer);
}
for (String string : map2.keySet()) {
System.out.println(string+" "+map2.get(string));
}
System.out.println("------------------------------------------");
/**
* 方法二 if-else创建
*/
Map<String,Integer> map1 = new HashMap();
for (String string : strings) {
Integer integer = map1.get(string);
if(integer==null)
map1.put(string,1);
else {
integer=integer+1;
map1.put(string,integer);
}
}
for (String string : map1.keySet()) {
System.out.println(string+" "+map1.get(string));
}
}
}
/*
* 需求:输入字符串“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)