欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何用集合统计字符串中每个字符出现的次数?

程序员文章站 2022-04-18 09:25:58
...

使用TreeMap集合统计字符串中字符出现的次数
例:
“aababcabcdabcde”
要求结果:
a(5)b(4)c(3)d(2)e(1)

为了广泛性,先做一个键盘录入

import java.util.Scanner;
import java.util.TreeMap;
import java.util.Set;

class StringDemo{
	public static void main(String [] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入字符串:");
		String  line = sc.nextLine();
	}
}

定义一个集合

TreeMap<Character,Integer> tm = new TreeMap<>();

为了把字符串存储进集合中,我把字符串转换成字符数组

Character chs = line.toCharArray();

遍历数组,同时把元素添加到集合中,这里我使用俩种方法
方法一:
使用V put(K,V)方法,此方法在添加元素时返回被替换的值,若键是第一次被添加,则返回null

for(char c : chs){
	Integer i = tm.put(c,1);
	if(i != null){
		i++;
		tm.put(c,i);
	}
}

方法二:
使用 V get(Key k)方法,此方法功能为根据键返回对应的值,若集合中没有该键,则返回null

for(char key : chs){
	Integer i = tm.get(key);
	if(i == null){
		tm.put(key,1);
	}else{
		i++;
		tm.put(key,i);
	}
}

定义字符串缓冲区,为了节省资源使用StringBuilder

StringBuilder sb = new StringBuilder();

遍历集合,得到键和值,按照要求进行拼接

Set<Character> set = tm.keySet();
for(Character key : set){
	Integer value = tm.get(key);
	sb.append(key).append("(").append(value).append(")");
}
String result = sb.toString();
System.out.println(result);