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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雷丹 中级黑马   /  2013-10-24 15:25  /  1185 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我遇到了这么个问题,不知道该怎么写好。
有3个map:
Map<Integer, String> m1 = new HashMap<Integer, String>();
Map<Integer, String> m2 = new HashMap<Integer, String>();
Map<Integer, Map<String, String>> map1 = new HashMap<Integer, Map<String, String>>();
m1.put(111, "1111");
m1.put(222, "2222");
m1.put(333, "3333");
m2.put(111, "aaaa");
m2.put(222, "bbbb");
m2.put(333, "cccc");
---------------------------------------------------------------------------------------
map1里是map又嵌套了一层map,我想这样,如果m1与m2中key值一样的话,就把相应的value组成新的键值对,放到map1里的map。
我最后想得到map1的结果是{111={"1111", "aaaa"}, 222={"2222", "bbbb"}, 333={"3333", "cccc"}}

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

3 个回复

倒序浏览
楼主要注意, map1里面的键是Integer类型,值是Map<String, String>,虽然值是两个String对象组合成的键值对,但仍然不能用{String,String}表示,而只能用{String=String}形式表示。
楼主想要实现的添加语句比较繁琐,慢慢的理清关系,一步一步的添加就可以了。因为map1有三个键,对应的有三个值,所以还要创建三个Map<String, String>对象,用来存放这三个键值对
  1.     Map<Integer, String> m1 = new HashMap<Integer, String>();
  2.            Map<Integer, String> m2 = new HashMap<Integer, String>();
  3.            Map<Integer, Map<String, String>> map1 = new HashMap<Integer, Map<String, String>>();
  4.            Map<String, String> ms1 = new HashMap<String, String> ();
  5.            Map<String, String> ms2 = new HashMap<String, String> ();
  6.            Map<String, String> ms3 = new HashMap<String, String> ();
  7.           
  8.            m1.put(111, "1111");
  9.            m1.put(222, "2222");
  10.            m1.put(333, "3333");
  11.            m2.put(111, "aaaa");
  12.            m2.put(222, "bbbb");
  13.            m2.put(333, "cccc");
  14.            ms1.put(m1.get(111).toString(), m2.get(111));
  15.            ms2.put(m1.get(222).toString(), m2.get(222));
  16.            ms3.put(m1.get(333).toString(), m2.get(333));
  17.            map1.put(111, ms1);
  18.            map1.put(222, ms2);
  19.            map1.put(333, ms3);
  20.           
  21. //System.out.println(m1);
  22.            System.out.println(map1);
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
周学彬 发表于 2013-10-24 16:10
楼主要注意, map1里面的键是Integer类型,值是Map,虽然值是两个String对象组合成的键值对,但仍然不能用{ ...

           ms1.put(m1.get(111).toString(), m2.get(111));
           ms2.put(m1.get(222).toString(), m2.get(222));
           ms3.put(m1.get(333).toString(), m2.get(333));
这里m1.get(111)为什么还要进行返回本身的操作,不懂
回复 使用道具 举报
To 金牌黑马 2013-10-27 16:03:41
板凳
楼主你好,如果问题已解决请将帖子状态修改为提问结束,
如果未解决请继续追问,谢谢合作
修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马