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

时间:2018-08-31 20:09:04

标签: java android hashmap

我想在Hashmap<String, Integer>(测试版)中“打印” Hashmap<String, Hashmap<String, Integer>>(假设是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}}
print2的结果:{A1 = {},B2 = {}}

如何设置Beta.put()以便清除Alpha时Beta保持不变?

2 个答案:

答案 0 :(得分:0)

这是您可以重置嵌套的HashMap的操作。该值在第22行被删除,然后作为新的内部hashmap实例添加回去。再次,我循环遍历containingMap和innerMap获取每个地图。一旦我有一个要重置的值,就调用重置函数。

import { Action } from 'redux'

enum MyActionType {
  MyActionA = 'MyActionA',
  MyActionB = 'MyActionB'
}

interface MyActionA extends Action {
  typeString: MyActionType.MyActionA,
  payload: {
    // omitted
  }
}

interface MyActionB extends Action {
  typeString: MyActionType.MyActionB,
  payload: {
    // omitted
  }
}

type MyActionBase =
  | MyActionA
  | MyActionB

function* typeSafeTakeEvery<ActionType extends MyActionType>(actionType: ActionType, saga: Function) {
  type MyAction = MyActionBase & { typeString: ActionType }

  yield takeEvery(actionType, function*(action: MyAction) {
    yield saga(action);
  });
}

// Usage

typeSafeTakeEvery(MyActionType.MyActionA, ...)

它实际上并不会改变Beta,这是评估每个条目并确保它是在其位置使用的新HashMap类型的问题。我认为这应该有所帮助。

答案 1 :(得分:-1)

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