黑马程序员技术交流社区

标题: 关于集合(Map)的问题! [打印本页]

作者: 杜光    时间: 2013-5-30 10:54
标题: 关于集合(Map)的问题!
本帖最后由 杜光 于 2013-5-31 07:48 编辑
  1. import java.util.*;

  2. class MapDemo4
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 HashMap<String,HashMap<String,String>> czbk = new HashMap<String,HashMap<String,String>>();

  7.                 HashMap<String,String> yure = new HashMap<String,String>();

  8.                 HashMap<String,String> jiuye = new HashMap<String,String>();

  9.                 yure.put("01","zhangsan");
  10.                 yure.put("02","lisi");

  11.                 jiuye.put("01","wangwu");
  12.                 jiuye.put("02","zhaoliu");

  13.                 czbk.put("01",yure);
  14.                 czbk.put("02",jiuye);
  15.                
  16.                 Iterator<String> it = czbk.keySet().iterator();
  17.                 while(it.hasNext())
  18.                 {
  19.                         String roomname = it.next();
  20.                         HashMap<String,String> room = czbk.get(roomname);
  21.                         getInof(roomname);

  22.                 }

  23.         }

  24.         public static void getInof(HashMap<String,String> T)
  25.         {
  26.                 Iterator<String> it = T.keySet().iterator();

  27.                 while(it.hasNext())
  28.                 {
  29.                         String id = it.next();
  30.                         String name = T.get(id);
  31.                         System.out.println(id+"..."+name);
  32.                 }
  33.         }
  34. }
复制代码
MapDemo4.java:27: 错误: 无法将类 MapDemo4中的方法 getInof应用到给定类型;
                        getInof(roomname);
                        ^
  需要: HashMap<String,String>
  找到: String
  原因: 无法通过方法调用转换将实际参数String转换为HashMap<String,String>


编译报错,不是很明白,为什么非要
HashMap<String,String> room = czbk.get(roomname);
getInof(room);

这样调用才行呢?

System.out.println(roomname); 和 getInof(yure);应该传的参数是一样的啊!不解



作者: 于腾飛    时间: 2013-5-30 11:09
你的getInof(HashMap<String,String> T)  需要的参数是hashmap集合,你的   roomname 是 String类型,你把它 传给 getInof(roomname)当然报错了!
作者: 杜光    时间: 2013-5-30 11:20
于腾飛 发表于 2013-5-30 11:09
你的getInof(HashMap T)  需要的参数是hashmap集合,你的   roomname 是 String类型,你把它 传给 getInof( ...
  1. while(it.hasNext())
  2.                 {
  3.                         String roomname = it.next();
  4.                         HashMap<String,String> room = czbk.get(roomname);
  5.                         getInof(roomname);

  6.                 }
复制代码
那上面这段我直接写成为什么还不可以?:
  1. while(it.hasNext())
  2.                 {
  3.                         HashMap<String,String> roomname = it.next();
  4.                         
  5.                         getInof(roomname);

  6.                 }
复制代码

作者: 于腾飛    时间: 2013-5-30 11:24
杜光 发表于 2013-5-30 11:20
那上面这段我直接写成为什么还不可以?:

楼主是气疯了吧,你迭代出来的KEY是String,你赋值给一个HASHMAP,能行嘛!
作者: 于腾飛    时间: 2013-5-30 11:25
杜光 发表于 2013-5-30 11:20
那上面这段我直接写成为什么还不可以?:

报错的时候注意下哪里报错,报错的原因是什么!都有提示的
作者: msileandroid    时间: 2013-5-30 13:46
一个是String ,一个是Hashmap;HashMap里面的键值对类型是String,就是说可以将String类型的的键值对放入HashMap;但容器类型还是HashMap.....
作者: 刘胜寒    时间: 2013-5-31 01:00
如果问题以解决,请结贴,未解决追加提问。谢谢合作




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