黑马程序员技术交流社区

标题: 统计一个字符串中各个字母出现的次数 [打印本页]

作者: 倒骑驴走着瞧    时间: 2015-4-4 23:03
标题: 统计一个字符串中各个字母出现的次数
package com.hm.cn;

import java.util.*;
/**
        统计一个字符串中各个字母出现的次数
*/
class MapTest
{
        public static void main(String[] args)
        {
                Map<Object,Integer> map = new HashMap<Object,Integer>();
                //TreeMap<Object,Integer> map = new TreeMap<Object,Integer>();//使用treeMap会对键进行排序
                String str = "asdfas4d?asd(asd)0fadf";
                char[] charArray = str.toCharArray();
                for(int i=0;i<charArray.length;i++){
                        if((charArray[i]>='a'&&charArray[i]<='z')||(charArray[i]>='A'&&charArray[i]<='Z')){//说明为字母
                                if(map.containsKey(charArray[i])){//如果map中已经有该字母的记录,数目+1
                                        int num = map.get(charArray[i]);
                                        map.put(charArray[i],num+1);
                                }else{//没有该字母的记录,添加记录,数目为1
                                        map.put(charArray[i],1);
                                }
                        }
                }

                Set set = map.keySet();//获取map中所有的key
                Iterator i = set.iterator();//使用迭代器
                while(i.hasNext()){
                        Object obj = i.next();
                        System.out.println(obj.toString()+"---"+map.get(obj));//打印key以及对应的值
                }
        }
}



作者: deziko    时间: 2015-4-4 23:04
不错,赞一个!!
作者: 静默小和尚    时间: 2015-4-4 23:04
{:3_51:}这不是抽奖题的答案么
作者: 随缘就好    时间: 2015-4-4 23:05
楼主好人 直接分享答案
作者: tu3    时间: 2015-4-4 23:05
{:3_51:}嘿嘿嘿

作者: 前_行    时间: 2015-4-4 23:08
支持一下,赞赞赞赞赞赞赞!
作者: 陈佳    时间: 2015-4-4 23:33
学习了!:handshake
作者: 倒骑驴走着瞧    时间: 2015-4-5 08:28
deziko 发表于 2015-4-4 23:04
不错,赞一个!!

谢谢,一块加油奥
作者: 倒骑驴走着瞧    时间: 2015-4-5 08:29
静默小和尚 发表于 2015-4-4 23:04
这不是抽奖题的答案么

哇,没注意,早知道就去搞了:lol
作者: 倒骑驴走着瞧    时间: 2015-4-5 08:30
随缘就好 发表于 2015-4-4 23:05
楼主好人 直接分享答案

不客气,自己瞎写的,共同努力
作者: 黑马:二师兄    时间: 2015-4-5 08:38
赞一个!
作者: hello_csu    时间: 2015-4-5 09:22
本帖最后由 hello_csu 于 2015-4-5 09:26 编辑

楼主,我觉得上面这段代码可以优化一下(减少查询次数),如下:
  1. int  count = 0;
  2.   for(int i=0;i<charArray.length;i++){
  3.                         if((charArray[i]>='a'&&charArray[i]<='z')||(charArray[i]>='A'&&charArray[i]<='Z')){//说明为字母
  4.                                 Integer value = map.get(charArray[i]);
  5.                                if(value != null) {
  6.                                   count = value.intValue();
  7.                                  }
  8.                                  count++;
  9.                                 map.put(charArray[i],count);
  10.                                count = 0;
  11.                            
  12.                         }
复制代码




作者: 倒骑驴走着瞧    时间: 2015-4-5 12:17
hello_csu 发表于 2015-4-5 09:22
楼主,我觉得上面这段代码可以优化一下(减少查询次数),如下:

不错,可以优化,3q
作者: 胡几手    时间: 2015-4-5 12:44
谢谢分享啊,楼主好人。
作者: Sylvanas    时间: 2015-4-5 18:10
我都不好意思说第一次自己做这道题绕了多大的一个弯了
作者: 佐佑    时间: 2015-4-5 20:30
还可以,格式对
作者: liurongzhi1991    时间: 2015-4-5 20:37
看看:lol




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2