黑马程序员技术交流社区

标题: Map练习中的错误,有些不明白 [打印本页]

作者: 枕草虫    时间: 2015-7-29 17:25
标题: Map练习中的错误,有些不明白
  1. import java.util.*;
  2. class  MapTest
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 String s = myTest("zzfdqavcbsacdfs");
  7.                 System.out.println(s);
  8.         }

  9.         public static String myTest(String s)
  10.         {
  11.                 char[] ch = s.toCharArray();

  12.                 TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();

  13.                 for (int i = 0;i<ch.length ; i++ )
  14.                 {
  15.                         if(!(ch[i]>='a' && ch[i]<='z' || ch[i]>='A' && ch[i]<='Z'))
  16.                                 continue;
  17.                         int value = 1;
  18.                         if(!tm.containsKey(ch[i]))
  19.                                 tm.put(ch[i],value);
  20.                         else
  21.                         {
  22.                                 value = tm.get(ch[i]);
  23.                                 value += 1;
  24.                                 tm.put(ch[i],value);
  25.                         }               
  26.                 }
  27.                 //System.out.println(tm);
  28.                 Iterator it = tm.keySet().iterator();
  29.                 StringBuilder sb = new StringBuilder();
  30.                 while(it.hasNext())
  31.                 {
  32.                         Character key = it.next(); //此会编译时报错 ,说Object无法转化为Charactor 。要写成Object key 才行。为什么?
  33.                         Integer v = tm.get(key);
  34.                        
  35.                         sb.append(key+"("+v+")");
  36.                 }
  37.                 return sb.toString();
  38.         }
  39. }
复制代码
在我注释的地方会报错,求解答?
StringMathTest.java:35: 错误: 不兼容的类型: Object无法转换为Character
                        Character key = it.next();
                                               ^



作者: a12366456    时间: 2015-7-29 18:20
为了程序的拓展性,Iterator里面的对象以Object存储,这时要么强转类型要么指定泛型。
推荐指定泛型
  1. Iterator<Character> it = tm.keySet().iterator();
复制代码



作者: 枕草虫    时间: 2015-7-29 19:37
a12366456 发表于 2015-7-29 18:20
为了程序的拓展性,Iterator里面的对象以Object存储,这时要么强转类型要么指定泛型。
推荐指定泛型

哦,对对对对,竟然忘记这一茬了,谢啦




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