黑马程序员技术交流社区
标题:
查找字符串出现的次数。。
[打印本页]
作者:
孙浩迪
时间:
2012-7-10 15:29
标题:
查找字符串出现的次数。。
本帖最后由 sunhaodi 于 2012-7-10 16:41 编辑
public class StringTest {
public static void main(String[] args) {
String s = "abcdekka27qoq";
HashMap<Character,Integer> mp = new HashMap<Character,Integer>();
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
Integer count=mp.get(c);
if(count==null) //这里为什么count==null count=1 啊 如果=null的话,那就一个都没有还要记录1个不是错了吗,但是结果输出来又是对的。希望高手解释下。
count=1;
else
count++;
mp.put(c, count);
}
Set<Map.Entry<Character, Integer>> entrys= mp.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.print(entry.getKey()+"("+entry.getValue()+")");
}
}
}
"abcdekka27qoq" ,输出格式为:a(2)b(1)k(2)
作者:
陆强强
时间:
2012-7-10 15:41
if(count==null) //这里要和下面连起来看, 先判断是不是有元素,没有执行count=1。char c不管集合里面有没有都要加进集合的。没有的话就是第一次出现
count=1;
else//否则就是集合里有这个元素,加上这次就是 count++;也可以count=count+1;然后存进集合
count++;
mp.put(c, count);
作者:
淡然
时间:
2012-7-10 15:47
本帖最后由 淡然 于 2012-7-10 15:51 编辑
public class StringTest {
public static void main(String[] args) {
String s = "abcdekka27qoq";
HashMap<Character,Integer> mp = new HashMap<Character,Integer>();
for(int i=0;i<s.length();i++){
char c=s.charAt(i);
Integer count=mp.get(c);
if(count==null) //因为c第一次出现,hashmap集合中还没有c对应的值,所以count等于1
count=1;
else
count++;
mp.put(c, count);
}
Set<Map.Entry<Character, Integer>> entrys= mp.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.print(entry.getKey()+"("+entry.getValue()+")");
}
}
}
复制代码
因为c第一次出现,hashmap集合中还没有c对应的值,所以get方法会返回null,count当然要等于1啦
作者:
孙浩迪
时间:
2012-7-10 16:42
明白了,谢了。
作者:
孙浩迪
时间:
2012-7-10 16:42
陆强强 发表于 2012-7-10 15:41
if(count==null) //这里要和下面连起来看, 先判断是不是有元素,没有执行count=1。char c不管集合 ...
你没进11期啊。。。
作者:
孙浩迪
时间:
2012-7-10 16:43
陆强强 发表于 2012-7-10 15:41
if(count==null) //这里要和下面连起来看, 先判断是不是有元素,没有执行count=1。char c不管集合 ...
你没进11期啊。。。
作者:
陆强强
时间:
2012-7-10 17:02
没进,人太多了。这期都危险,前面有20几个人了,面试好的,都是11多出来的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2