为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Java/Android 中的 Hashmap 中“打印”一个 HashMap

如何在 Java/Android 中的 Hashmap 中“打印”一个 HashMap

白衣非少年 2021-08-25 10:12:19
我想Hashmap<String, Integer>在Hashmap<String, Hashmap<String, Integer>>(Beta) 中“打印”一个(比如说 Alpha),我说“打印”是因为我不希望“打印”的 Alpha 在我重新使用 Alpha 时发生变化。例如:class scratch_2 {    public static void main(String[] args) {        HashMap<String, Integer> Alpha = new HashMap<>();        HashMap<String, HashMap<String, Integer>> Beta = new HashMap<>();        Beta.put("A1", Alpha);        Beta.put("B2", Alpha);        Alpha.put("A", 1);        Alpha.put("B", 2);        System.out.println(Beta); --->print1        Alpha.clear();        System.out.println(Beta); ---->print2    }}打印1的结果:{A1={A=1, B=2}, B2={A=1, B=2}}打印2的结果:{A1={}, B2={}}如何设置 Beta.put() 以便在清除 Alpha 时,Beta 保持不变?
查看完整描述

2 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

以下是重置嵌套 HashMap 的方法。该值在第 22 行被删除,然后作为新的内部 hashmap 实例添加回来。再次,我遍历 containsMap 和 innerMap 获取每个地图。一旦我有一个要重置的值,我就会调用重置函数。


import java.util.*;

import java.lang.*;


public class Collections {


public HashMap<String, HashMap<String, Integer>> 

 createMap(String beta, String alpha, int m, HashMap<String, 

 Integer> innerStructure, HashMap<String, HashMap<String, 

  Integer>> containingStructure) {

    while(m>0) {

        innerStructure.put(beta, m);

        m--;

    }

    containingStructure.put(alpha, innerStructure); 

    return containingStructure;

}


public void reset(HashMap<String, HashMap<String, Integer>> 

map, int x) {

    HashMap<String, Integer> betaMap = new HashMap<String, Integer>();

    for(Map.Entry<String,HashMap<String,Integer>> entry: map.entrySet()) {

        System.out.println("Key before is:" + entry.getKey());

        if(entry.getValue() instanceof Map) {

            for(Map.Entry<String, Integer> mapEntry: entry.getValue().entrySet()) {

                if(mapEntry.getValue() == x) {

                    entry.getValue().remove(x);

                    map.put(entry.getKey(), betaMap);

                }

            }

        }

    }   


public void print(HashMap<String, HashMap<String, Integer>> map) {

    for(Map.Entry<String,HashMap<String,Integer>> entry: map.entrySet()) {

        System.out.println("Key is:" + entry.getKey());

        if(entry.getValue() instanceof Map) {

            for(Map.Entry<String, Integer> mapEntry: entry.getValue().entrySet()) {

                System.out.println(mapEntry.getKey());

            }

        }

    }

}


public static void main(String[] args) {

    Collections collections = new Collections();

    HashMap<String, Integer> innerStructure = new HashMap<>();

    HashMap<String, HashMap<String, Integer>> containingStructure = new HashMap<>();

    containingStructure = collections.createMap("B1", "A1", 4, innerStructure, containingStructure);

    collections.reset(containingStructure, 2);

    collections.print(containingStructure);

}

}

它真的不会改变测试版,而是评估每个条目并确保它是一个新的 HashMap 类型。我认为这应该有所帮助。


查看完整回答
反对 回复 2021-08-25
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

我应该Alpha = new HashMap<>();在我不再需要它时通过分配它来创建一个新的 Alpha 实例。然后我可以重新使用它而不会影响 Beta。


查看完整回答
反对 回复 2021-08-25
  • 2 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信