黑马程序员技术交流社区
标题:
获取字符串中字母的次数
[打印本页]
作者:
帅气的冬瓜
时间:
2013-11-5 18:34
标题:
获取字符串中字母的次数
本帖最后由 帅气的冬瓜 于 2013-11-5 23:17 编辑
当输入一串字符串,要获取每个字母的次数, 关于下面这几句代码,没理解过来
1 将每一个字母作为键去map集合
2 如果返回null,将该字母和”1“存入到map中
3 如果返回不是null,说明该字母在map集合中已经存在并有对应次数。那么就获取该次数并进行自增。
import java.util.*;
class MapTest
{
public static void main(String[] args)
{
String s=charCount("abcdhbavcdcb");
System.out.println(s);
}
public static String charCount(String str)
{
char[] chs=str.toCharArray( );
TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
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)
count=value;
count++;
tm.put(chs[x],count);
count=0; //清零之后,count++;是否变化,value是否变化。是怎样循环的?
}
StringBuilder sb=new StringBuilder();
Set<Map.Entry<Character,Integer>> entrySet=tm.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();
sb.append(ch+"("+value+")");
}
return sb.toString();
}
}
我问的就是当count=0;清零之后,value 和 count++ 的值有什么变化?具体点,谢了!
作者:
寻丶丶觅
时间:
2013-11-5 18:51
表示没看懂楼主说的第一次清零是啥意思,发一下我写的吧,希望有帮助
public static void main(String[] args)
{
char[] ch = null;
TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>(new MyComparator());
//IO没学到,暂代
String s = "dds34573524jfsjjfs*(^&%^%";
//将字符串转化为数组。
ch = s.toCharArray();
for (int x=0;x<s.length() ;x++ )
{
//获取value值
Integer count = tm.get(ch[x]);
//判断集合中是否存在该键值
if (count== null)
{
tm.put(ch[x],1);
}
else
//因为Map集合键值唯一,可以用新值替换,达到累计目的
tm.put(ch[x],count+1);
}
作者:
零下五度的水
时间:
2013-11-5 19:02
value不变,count++相当于count=count+1,
你这个代码应该是在一个循环里,所以Integer value 每次定义的是一个不同的value变量,相当于默认直接清0了
count目测没什么存在的必要
作者:
帅气的冬瓜
时间:
2013-11-6 17:47
寻丶丶觅 发表于 2013-11-5 18:51
表示没看懂楼主说的第一次清零是啥意思,发一下我写的吧,希望有帮助
public static void main(String[] ar ...
我又把程序谢了一遍,你写的if语句我看懂了,这个是if的简写,我还是不太懂,每次变化的值是怎么样的?关键是这点!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2