package cn.jason.test;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Test {
public static void main(String[] args) {
/*
* 练习:"basdfghrunjbasyufhnrksfa"
* 获取字符串中每一个字母出现的次数。要求格式:a(2)b(1)c(3)....
*/
String str = "basd@fg$hr%un!jb_asy-ufhnrksfa";
String char_count = getCharCount(str);
System.out.println(char_count);
}
* 练习:"basdfghrunjbasyufhnrksfa"
* 获取字符串中每一个字母出现的次数。要求格式:a(2)b(1)c(3)....
*/
String str = "basd@fg$hr%un!jb_asy-ufhnrksfa";
String char_count = getCharCount(str);
System.out.println(char_count);
}
private static String getCharCount(String str) {
//1.将字符串转成字符数组
char[] chs = str.toCharArray();
//2.定义map集合
Map<Character,Integer> map = new TreeMap<Character,Integer>();
//3.遍历字符数组,获取每一个字母
for (int i = 0; i < chs.length; i++) {
//只对字母操作
if(!(chs[i]>='a'&&chs[i]<='z'||chs[i]>='A'&&chs[i]<='Z'))
continue;//跳出本次循环,继续下一次循环
//将遍历到的字母作为键去查表,获取值
Integer value = map.get(chs[i]); //map.get()第一次就会显示null
int count = 0; //用于记录次数
//如果次数存在,就用count记录该次数。如果次数不存在,就不记录,只对count自增变成1
if(value!=null){
count = value;
}
count++;
map.put(chs[i],count);
/*if(value==null){
map.put(chs[i], 1);
}else{
value++;
map.put(chs[i], value);
}*/
}
return toString(map);
}
//1.将字符串转成字符数组
char[] chs = str.toCharArray();
//2.定义map集合
Map<Character,Integer> map = new TreeMap<Character,Integer>();
//3.遍历字符数组,获取每一个字母
for (int i = 0; i < chs.length; i++) {
//只对字母操作
if(!(chs[i]>='a'&&chs[i]<='z'||chs[i]>='A'&&chs[i]<='Z'))
continue;//跳出本次循环,继续下一次循环
//将遍历到的字母作为键去查表,获取值
Integer value = map.get(chs[i]); //map.get()第一次就会显示null
int count = 0; //用于记录次数
//如果次数存在,就用count记录该次数。如果次数不存在,就不记录,只对count自增变成1
if(value!=null){
count = value;
}
count++;
map.put(chs[i],count);
/*if(value==null){
map.put(chs[i], 1);
}else{
value++;
map.put(chs[i], value);
}*/
}
return toString(map);
}
/*
* 将map集合中的元素转成指定格式的字符串
*/
private static String toString(Map<Character, Integer> map) {
//1.数据多,无论类型是什么,最终都要变成字符串。所以可以使用StringBuilder !!!
StringBuilder sb = new StringBuilder();
//2.遍历集合map。keySet
Set<Character> keySet = map.keySet();
for(Iterator<Character> it = keySet.iterator();it.hasNext();)
{
Character key = it.next();
Integer value = map.get(key);
//将键值存入sb中
sb.append(key+"("+value+")");
}
return sb.toString();
}
* 将map集合中的元素转成指定格式的字符串
*/
private static String toString(Map<Character, Integer> map) {
//1.数据多,无论类型是什么,最终都要变成字符串。所以可以使用StringBuilder !!!
StringBuilder sb = new StringBuilder();
//2.遍历集合map。keySet
Set<Character> keySet = map.keySet();
for(Iterator<Character> it = keySet.iterator();it.hasNext();)
{
Character key = it.next();
Integer value = map.get(key);
//将键值存入sb中
sb.append(key+"("+value+")");
}
return sb.toString();
}
}