毕老师视频里讲的关于提取字符串中字母出现个数的程序,可运行,但是自己还是不能完全掌握
/*
记录字符串中字母出现的次数
1.因为操作的是字符串中的字母,现将字符串转换成字符数组
2.便利字符数组,用每一个字母作为键去差Map集合这个表
如果字母键不存在,将该字母作为键1作为值存储到map集合中
如果该字母存在,就将该字母键对应值取出并+1,将该字母和+1后的
值存储到Map集合中,键相同时值会覆盖,map集合就记录所有字母出现的次数
*/
import java.util.Map;
import java.util.TreeMap;
import java.util.Iterator;
import java.*;
public class MapTest
{
public static void main(String[] args)
{
String str="vasldfjwoijgsdjgfa";
String s=getCharCount(str);
System.out.println(s);
}
public static String getCharCount(String str)
{
//将字符串变成字符数组
char[] chs=str.toCharArray();
//定义Map集合表
Map<Character,Integer> map=new TreeMap<Character,Integer>();
int count=1;
for(int i=0;i<chs.length;i++)
{
//将数组中的字母作为键去查表
Integer value=map.get(chs[i]);
//判断值是否为null
if(value!=null)
{
count =value+1;
}
map.put(chs[i],count);
/*if(value==null)
{
map.put(chs[i],1);
}else{
map.put(chs[i],value+1);
}*/
}
return maptoString(map);
}
private static String maptoString(Map<Character,Integer>map){
StringBuilder sb=new StringBuilder();
Iterator<Character> it=map.keySet().iterator();
while(it.hasNext()){
Character key=it.next();
Integer value =map.get(key);
sb.append(key+"("+value+")");
}
return sb.toString();
}
} |
|