【问题标题】:How to iterate and print nested HashMap with Integer as value? [duplicate]如何以整数为值迭代和打印嵌套的 HashMap? [复制]
【发布时间】:2016-10-31 09:10:50
【问题描述】:

我想打印一个嵌套的 HashMap,它是:

HashMap<Integer,HashMap<Character,Integer>> map;

我搜索了很多,但找不到打印 Integer 的方法,因为当我在其上使用 getValues() 时,它告诉我:“找不到符号”。 (因为它是一个整数值)

这是我尝试做的:

public void print(){
   for(Map.Entry<Integer, HashMap<Character,Integer>> t :this.map.entrySet()){
     Integer key = t.getKey();
     for (Map.Entry<Character,Integer> e : this.map.getValue().entrySet())
       System.out.println("OuterKey:" + key + " InnerKey: " + e.getKey()+ " VALUE:" +e.getValue());
   }
}

我不能在第二个中使用 getValue(),那我还能用什么?

提前致谢! 祝你今天过得愉快。 克里斯。

【问题讨论】:

    标签: java hashmap integer println getvalue


    【解决方案1】:

    getValue()Map.Entry 的方法,而不是Map

    您应该在第二个循环中使用t.getValue().entrySet() 而不是this.map.getValue().entrySet()

    这将为您提供内部地图。

    public void print(){
       for(Map.Entry<Integer, HashMap<Character,Integer>> t :this.map.entrySet()){
         Integer key = t.getKey();
         for (Map.Entry<Character,Integer> e : t.getValue().entrySet())
           System.out.println("OuterKey:" + key + " InnerKey: " + e.getKey()+ " VALUE:" +e.getValue());
       }
    }
    

    【讨论】:

    • 非常感谢 Eran,它运行良好!
    【解决方案2】:

    打印整个内容的最简单方法:

    System.out.println(map.toString());
    

    是的,就是这样; toString() 返回一个字符串...包含地图的所有内容;包括它的内部地图!

    如果你想自己做,那么你可以使用两个循环:

    for(Map.Entry<Integer, HashMap<Character,Integer>> innerMap : map.entrySet()) {
      for (Map.Entry<Character, Integer> aMap : innerMap.entrySet) {
        ... now you can call aMap.getKey() and .getValue()
    

    【讨论】:

      【解决方案3】:
      public static void main(String[] args) {
              HashMap<Integer,HashMap<Character,Integer>> map = new HashMap<Integer,HashMap<Character,Integer>>();
              HashMap<Character,Integer> map1 = new HashMap<Character,Integer>();
              map1.put('1', 11);
              HashMap<Character,Integer> map2 = new HashMap<Character,Integer>();
              map2.put('2', 22);
              map.put(111, map1);
              map.put(222, map2);
      
              for (Integer temp : map.keySet()) {
                  for (Character c : map.get(temp).keySet()) {
                      System.out.println("key--" + c + "--value--" + map.get(temp).get(c));
                  }
              }
          }
      

      希望它有效。

      【讨论】:

        猜你喜欢
        • 2014-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-13
        • 2019-01-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多