Java中用Map统计字符出现次数

冬天的老树枝 2014-07-08 09:48:44
本人Java新手上路
有以下一段代码是用来统计Map中各个字符出现的次数的,其中第6行不明白为什么val为什么要加1,作用是什么,为什么当只有一个字符比如a进行统计时,用int val = map.get(c)+1;和int val = map.get(c)结果都一样


public static Map<Character,Integer> countChars(String str){
Map<Character,Integer> map = new HashMap<Character,Integer>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if(map.containsKey(c)){
int val = map.get(c)+1;
map.put(c, val);
}else{
map.put(c, 1);
}
...全文
2213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
duanzhechengyu 2015-10-27
  • 打赏
  • 举报
回复
Map<Character,Integer> map = new HashMap<Character,Integer>(); //循环需要统计的字符串 for (int i = 0; i < str.length(); i++) { //遍历字符串中的每个字符 char c = str.charAt(i); //查找map中是否已经包含字符串的字符 if(map.containsKey(c)){ //如果已经包含则数量+1 int val = map.get(c)+1; //将+1后的值存放回map map.put(c, val); }else{ //如果未包含则初始化为1 map.put(c, 1); }
zy_think123 2014-07-08
  • 打赏
  • 举报
回复
楼主,已经回答的很清楚了,你就结贴了吧,老放在这也不是个事儿
zf12102926 2014-07-08
  • 打赏
  • 举报
回复
引用 4 楼 u014058078 的回复:
[quote=引用 3 楼 luotitan 的回复:] Map<Character,Integer> map = new HashMap<Character,Integer>(); //循环需要统计的字符串 for (int i = 0; i < str.length(); i++) { //遍历字符串中的每个字符 char c = str.charAt(i); //查找map中是否已经包含字符串的字符 if(map.containsKey(c)){ //如果已经包含则数量+1 int val = map.get(c)+1; //将+1后的值存放回map map.put(c, val); }else{ //如果未包含则初始化为1 map.put(c, 1); }
那么val的初值是什么[/quote] 初值看这一句: map.put(c, 1); 当map里面没有当前遍历到的字符时,就将此字符放到map里面,并将val的初值设为1。
tony4geek 2014-07-08
  • 打赏
  • 举报
回复
其实你debug下就很清楚的。
冬天的老树枝 2014-07-08
  • 打赏
  • 举报
回复
引用 3 楼 luotitan 的回复:
Map<Character,Integer> map = new HashMap<Character,Integer>(); //循环需要统计的字符串 for (int i = 0; i < str.length(); i++) { //遍历字符串中的每个字符 char c = str.charAt(i); //查找map中是否已经包含字符串的字符 if(map.containsKey(c)){ //如果已经包含则数量+1 int val = map.get(c)+1; //将+1后的值存放回map map.put(c, val); }else{ //如果未包含则初始化为1 map.put(c, 1); }
那么val的初值是什么
luotitan 2014-07-08
  • 打赏
  • 举报
回复
Map<Character,Integer> map = new HashMap<Character,Integer>(); //循环需要统计的字符串 for (int i = 0; i < str.length(); i++) { //遍历字符串中的每个字符 char c = str.charAt(i); //查找map中是否已经包含字符串的字符 if(map.containsKey(c)){ //如果已经包含则数量+1 int val = map.get(c)+1; //将+1后的值存放回map map.put(c, val); }else{ //如果未包含则初始化为1 map.put(c, 1); }
zf12102926 2014-07-08
  • 打赏
  • 举报
回复
你是要统计每个字符出现的个数,当相同字符出现的时候,当然要把map里面那个字符所对应的val加1。
tony4geek 2014-07-08
  • 打赏
  • 举报
回复
相同 的话就是累加上去 啊。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧