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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 896575538 中级黑马   /  2016-7-11 23:26  /  578 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么在集合嵌套中,两个子集合中定义的相同名字的键不能都被打印?
HashMap <String , Integer>hm1 = new HashMap<>();
hm1.put("第一个",01);
HashMap<String , Integer>hm2 = new HashMap<>();
hm2.put("第二个",02);
HashMap<HashMap<String , Integer>,String>hm  = new HashMap<>();
hm.put(hm1,001);
hm.put(hm2.002);
就像这样,遍历一下后就只能打印出一个,不能都打印出来

5 个回复

倒序浏览
你看看你new了几个对象了。。。
回复 使用道具 举报
求给分啊 急需技术分,求助攻!

package com.bi.Lc;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class HashMapLc {

public static void main(String[] args) {
  HashMap <String , Integer> hm1 = new HashMap<String , Integer>();
  hm1.put("第一个",01);
  HashMap<String , Integer> hm2 = new HashMap<String , Integer>();
  hm2.put("第二个",02);
  HashMap<HashMap<String , Integer>,String> hm  = new HashMap<HashMap<String , Integer>,String>();
  hm.put(hm1, "0001");
  hm.put(hm2, "0002");
  Iterator iter = hm.entrySet().iterator();
  while(iter.hasNext()){
   Map.Entry<String, Integer> entry = (Map.Entry<String, Integer>) iter.next();
   Object key = entry.getKey();
   Object val = entry.getValue();
   System.out.println(key+"=========="+val);
  }
}
}

回复 使用道具 举报
既然是嵌套 那取出也得嵌套取出
          for (HashMap <String , Integer> hmt : hm.keySet()) {
                         for (String key : hmt.keySet()) {
                                System.out.println(key+"="+hmt.get(key));
                        }
                         System.out.println(hm.get(hmt));
                  }
回复 使用道具 举报
和楼上观点一样,既然是嵌套集合那么遍历的时候双层循环遍历就好了,另外楼主代码有个小问题就是hm的值得泛型应该是Integer不是String
回复 使用道具 举报
几层嵌套就用几层循环
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马