A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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以及对应的值
                }
        }
}


评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

16 个回复

倒序浏览
不错,赞一个!!
回复 使用道具 举报
{:3_51:}这不是抽奖题的答案么
回复 使用道具 举报
楼主好人 直接分享答案
回复 使用道具 举报
{:3_51:}嘿嘿嘿
回复 使用道具 举报
支持一下,赞赞赞赞赞赞赞!
回复 使用道具 举报
学习了!:handshake
回复 使用道具 举报
deziko 发表于 2015-4-4 23:04
不错,赞一个!!

谢谢,一块加油奥
回复 使用道具 举报
静默小和尚 发表于 2015-4-4 23:04
这不是抽奖题的答案么

哇,没注意,早知道就去搞了:lol
回复 使用道具 举报
随缘就好 发表于 2015-4-4 23:05
楼主好人 直接分享答案

不客气,自己瞎写的,共同努力
回复 使用道具 举报
赞一个!
回复 使用道具 举报
本帖最后由 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.                         }
复制代码



回复 使用道具 举报
hello_csu 发表于 2015-4-5 09:22
楼主,我觉得上面这段代码可以优化一下(减少查询次数),如下:

不错,可以优化,3q
回复 使用道具 举报
谢谢分享啊,楼主好人。
回复 使用道具 举报
我都不好意思说第一次自己做这道题绕了多大的一个弯了
回复 使用道具 举报
还可以,格式对
回复 使用道具 举报
看看:lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马