两种方法:
第一种
通过 V get(Object key) 的返回值来判断是否有重复
分析:
1,定义一个字符串
2,把字符串转换成字符数组
3,定义一个TreeMap集合
键:Character
值:Integer
把字符数组装进map中,利用map中Key不重复的特点,统计字符串中每个字符出现的次数
4,遍历字符数组,得到每一个字符
5,方法一:拿刚才得到的字符作为键,通过 V get(Object key) 方法到集合中去找值,看返回值
是null:说明该键不存在,就把该字符作为键,1作为值存储
不是null:说明该键存在,就把值加1,然后重写存储该键和值
方法二:通过containsKey()方法判断元素是否重复
true:说明该键不存在,就把该字符作为键,1作为值存储
false :说明该键存在,就把值加1,然后重写存储该键和值
6,定义字符串缓冲区变量
7,遍历集合,得到键和值,进行按照要求拼接
核心逻辑:
Integer count = tmap.get(chs[i]);
// 是null:说明该键不存在,就把该字符作为键,1作为值存储
if (count == null) {
tmap.put(chs[i], 1);
} else {
// 不是null:说明该键存在,就把值加1,然后重写存储该键和值
tmap.put(chs[i], count + 1);
}
完整代码:
import java.util.Set;
import java.util.TreeMap;
/*
* 统计字符串中每个字符出现的次数
*/
public class CountDome {
public static void main(String[] args) {
// 定义一个字符串
String str = "aacc";
// 把字符串转换为字符数组
char[] chs = str.toCharArray();
// 定义一个TreeMap集合
TreeMap<Character, Integer> tmap = new TreeMap<Character, Integer>();
// 遍历字符数组,得到每一个字符
for (int i = 0; i < chs.length; i++) {
// 拿刚才得到的字符作为键到集合中去找值,看返回值
Integer count = tmap.get(chs[i]);
// 是null:说明该键不存在,就把该字符作为键,1作为值存储
if (count == null) {
tmap.put(chs[i], 1);
} else {
// 不是null:说明该键存在,就把值加1,然后重写存储该键和值
tmap.put(chs[i], count + 1);
}
}
// 定义字符串缓冲区变量
StringBuilder sb = new StringBuilder();
// 遍历集合,得到键和值,进行按照要求拼接
Set<Character> set = tmap.keySet();
for (Character key : set) {
Integer value = tmap.get(key);
sb.append(key).append("(").append(value).append(")");
}
System.out.println(sb);
}
}
方法二:通过containsKey()方法判断元素是否重复
核心逻辑:
if(!tm.containsKey(key)){
tm.put(key, 1);
}else{
tm.put(key, tm.get(key)+1);
}
完整代码:
import java.util.Set;
import java.util.TreeMap;
public class CountDemo2 {
public static void main(String[] args) {
String str = "aaacccsbbbsssaa";
char[] chars = str.toCharArray();
TreeMap<Character,Integer> tm = new TreeMap<Character, Integer>();
for (char key : chars) {
if(!tm.containsKey(key)){
tm.put(key, 1);
}else{
tm.put(key, tm.get(key)+1);
}
}
Set<Character> keySet = tm.keySet();
StringBuilder sb = new StringBuilder();
for (Character key : keySet) {
//System.out.println(tm.get(key));
sb.append(key).append(" ").append(tm.get(key)).append("\n");
}
System.out.println(sb);
}
}