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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 張帅 中级黑马   /  2013-10-1 15:13  /  3025 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 張帅 于 2013-10-1 23:37 编辑

import java.util.*;
class TreeMapTest
{
     public static void main(String[] args)
        {
              charCount("abcdbsadcb");
        }
        public static String charCount(String str)
        {
                char[] chs = str.toCharArray();
                TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();//问题,TreeMap中的Charactor和Integer能不能换成int和char为什么?
                for(int x=0;x<chs.length;x++)
                {
                   Integer value = tm.get(chs[x]);//当x=0时,chs[0]位置的字符时‘a’这句整句语句是不是获取a出现的次数的意思还是?
                        if(value==null)
                        {
                                tm.put(chs[x],1);
                        }
            else
                        {
                                value=value+1;
                                tm.put(chs[x],value);
                        }
                        
                }
                System.out.println(tm);
                return null;

        }

}

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

4 个回复

倒序浏览
问题,TreeMap中的Character和Integer能不能换成int和char为什么?
不能,TreeMap集合是存储对象的,泛型中的类型是用来定义集合中元素类型,对象类型不能使基本数据类型;
当x=0时,chs[0]位置的字符时‘a’这句整句语句是不是获取a出现的次数的意思还是?
获取a出现的次数,如果值为空,则为集合添加元素,如果不为空,value加1,并覆盖集合中原先存在的值;

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
我是这么理解的:1.泛型可以限定集合中的输入类型,里面要放类,也可以是自己定义的类,或通配符。
Integer是类,而int不是。
2.Integer value = tm.get(chs[x]);
这个你先要理解Map集合的特点,它是成对添加进集合的,键和值。而且键不重复
当x=0时,tm.get(chs[0])是   键a所对应的值。因为现在集合中还没有元素,所以为null
根据下面的判断语句,值为null时,往集合中加元素 tm.put(chs[x],1);
如果不为null,那就把值+1
这样到最后,每个键所对的值就是出现的次数

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
第一个问题,为什么要用Character和Integer,不能用char和int,因为char和int是基本数据类型,而character和integer是这两个基本数据类型的封装类,对于集合来说只能以类作为它的存储对象,而这时要把int类型的数据存储到集合里是不可能的,必须把他包装成类,所以他们存在是很必要的。

评分

参与人数 1技术分 +1 收起 理由
黄兴旺 + 1

查看全部评分

回复 使用道具 举报
你要明白这是计算一个字符串中每个字符出现的次数,
你知道运行的思路,那么这个题就很容易理解了。

思路:
1.把字符串转化成字符数组后,然后开始遍历数组
   2.在遍历的时候,没读取一个字符,然后在集合中查看,如果存在则读取出来,然后数量加1,然后在存入里面如果没有,则添加里面,数量是1.
  3.输出格式,读取集合然后拼接字符串,利用StringBuffer。

希望对你有帮助!

评分

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

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马