练习:
“adsafdsafssdfdsfgfdaseawr”获取该字符串中字符出现的次数
思路:
每个字母对应一个次数————————map集合
1,将字符串转换为字符数组,因为对每个字母进行操作
2,定义map集合,因为打印结果的字符有顺序,所以使用treemap
3,遍历字符数组
将每个字母作为键放入map集合中
“adsafdsafssdfdsfgfdaseawr”获取该字符串中字符出现的次数
思路:
每个字母对应一个次数————————map集合
1,将字符串转换为字符数组,因为对每个字母进行操作
2,定义map集合,因为打印结果的字符有顺序,所以使用treemap
3,遍历字符数组
将每个字母作为键放入map集合中
若相同则自增覆盖源键对应的值
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
public class Map2lixi2 {
public static void main(String[] args){
System.out.println(charcount ("ad+_=sa-f=d-=s=afssdfdsfgfdaseawr"));
}
public static String charcount (String str)
{
char[] chs = str.toCharArray();
TreeMap<Character, Integer> tm = new TreeMap<>();
int count=0;
for(int x=0;x<chs.length;x++)
{
if(!(chs[x]>='a'&& chs[x]<='z') || (chs[x]>='A'&& chs[x]<='Z'))
continue;
Integer value = tm.get(chs[x]);
/*if(value==null)
{
tm.put(chs[x], 1);
}
else
{
value++;
tm.put(chs[x], value);
}*/
if(value!=null)
count=value;
count++;
tm.put(chs[x], count);
count=0;
}
//System.out.println(tm);
StringBuilder sb = new StringBuilder();
Set<Map.Entry<Character, Integer>> me = tm.entrySet();
Iterator<Map.Entry<Character, Integer>> it = me.iterator();
while(it.hasNext())
{
Map.Entry<Character, Integer> m = it.next();
Character ch = m.getKey();
Integer in = m.getValue();
sb.append(ch+"("+in+")");
}
return sb.toString();
}
}