我想在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保持不变?
答案 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。