例如String str = “abcaaaefdabbhg”;
统计该字符串中每个字符出现的次数,输出:
a====5
b====3
c====1
d====1
e====1
f====1
g====1
h====1
方法一:
采用HashMap
publicstaticvoidcount(Stringstr){//将字符串转化为字符数组char[]chars=str.toCharArray();//创建一个HashMap名为hmHashMap<Character,Integer>hm=newHashMap();//定义一个字符串c,循环遍历遍历chars数组for(charc:chars){//containsKey(c),当c不存在于hm中if(!hm.containsKey(c)){hm.put(c,1);}else{//否则获得c的值并且加1hm.put(c,hm.get(c)+1);}//或者上面的if和else替换成下面这一行/*hm.put(c,hm.containsKey(c)?hm.get(c)+1:1);*/}for(Characterkey:hm.keySet()){//hm.keySet()代表所有键的集合,进行格式化输出System.out.println(key+"===="+hm.get(key));}}publicstaticvoidmain(String[]args){//TODO自动生成的方法存根Stringstr="abcaaaefdabbhg";count(str);}}
方法二:
publicstaticvoidcount(Stringstr){//创建26个空间大小的数组,存放26个字母int[]nums=newint[26];for(chari:str.toCharArray()){//自动将chari转化成ascall码if(i>=97&&i<=122){//利用数组的索引进行存储nums[i-97]++;}}for(inti=0;i<nums.length;i++){if(nums[i]!=0){//i加上97并且再转化为char类型就可以显示相应的字符charj=(char)(i+97);System.out.println(j+"===="+nums[i]);}}}
和方法1一样在main函数中调用就可以啦!