这是毕老师视频上讲过的例子,建议你多看几遍,好好琢磨琢磨:
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Test2 {
public static void main(String[] args) {
//存入字符串
String s=charCount("abcdekka27qoq");
System.out.println(s);
}
public static String charCount(String str)
{
//将字符串转换成字符数组,并存储到chs[]中
char[]chs=str.toCharArray();
//定义一个TreeMap集合,用来存放字母和出现次数的映射关系
TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
//遍历字符数组
for(int x=0;x<chs.length;x++)
{
//判断字符是否为字母。
if(!(chs[x]>='a')&&chs[x]<='z'||chs[x]>='A'&&chs[x]<='Z')
continue;
//把字母作为键去集合中查找并获取value值,并返回value值。
Integer value=tm.get(chs[x]);
//如果value==null,说明字母就出现一次
if(value==null)
{
//把结果放进容器中
tm.put(chs[x], 1);
}
else
{
//次数加1
value=value+1;
//把字母和自增后的value值放进容器中
tm.put(chs[x], value);
}
}
//建立缓冲区,用于存放需要打印的数据
StringBuilder sb=new StringBuilder();
//将TreeMap集合中的tm映射关系取出,放在Set集合中
Set<Map.Entry<Character,Integer>> entrySet=tm.entrySet();
//迭代Set集合entrySet中的元素
Iterator<Map.Entry<Character,Integer>> it=entrySet.iterator();
while(it.hasNext())
{
Map.Entry<Character,Integer> me=it.next();
//获取字母(键)
Character ch=me.getKey();
//获取值(字母出现的次数)
Integer value=me.getValue();
//把键和值放在创建的StringBuilder容器中
sb.append(ch+"("+value+")");
}
return sb.toString();
}
}
|