黑马程序员技术交流社区

标题: HashMap的一点问题 [打印本页]

作者: 896575538    时间: 2016-7-11 23:26
标题: HashMap的一点问题
为什么在集合嵌套中,两个子集合中定义的相同名字的键不能都被打印?
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);
就像这样,遍历一下后就只能打印出一个,不能都打印出来

作者: 觅离    时间: 2016-7-23 22:46
你看看你new了几个对象了。。。
作者: SwallowJin    时间: 2016-7-24 07:43
求给分啊 急需技术分,求助攻!

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);
  }
}
}


作者: ylca    时间: 2016-7-24 13:14
既然是嵌套 那取出也得嵌套取出
          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));
                  }
作者: rockphoenix    时间: 2016-7-24 15:13
和楼上观点一样,既然是嵌套集合那么遍历的时候双层循环遍历就好了,另外楼主代码有个小问题就是hm的值得泛型应该是Integer不是String
作者: q123123    时间: 2016-7-24 23:29
几层嵌套就用几层循环




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