gpt4 book ai didi

java - 将 Hashmap 恢复为之前的值

转载 作者:行者123 更新时间:2023-11-30 01:41:37 29 4
gpt4 key购买 nike

我有一个名为 Varfoo 的类,用于存储变量。我有另一个名为 Replacement 的类,它使用 HashMap 将 x 替换为 2。使用忘记方法,意味着忘记将 x 替换为 2。

    Varfoo x = new VarFoo("x");
Replacement s = new Replacement();
s.put(new VarFoo("x"), new IntFoo(2));
x.applyReplacement(s);
s.forget(x);

这是忘记方法:

public boolean forget(VarFoo var) {
if (var == null) {
throw new NullPointerException();
} else {
if (replacementMap.containsKey(var)) {
replacementMap.remove(var);
return true;
} else {
return false;
}
}
}

它将导致 null,因为我已经删除了 key 本身,而不是我想要的。我怎样才能将其恢复到原来的样子?

Varfoo 的等于和哈希码:

@Override
public boolean equals(Object o) {
if (o == null) return false;
if (!(o instanceof VarFoo))
return false;
if (o == this)
return true;
return name.equals(((VarFoo) o).name);
}

@Override
public int hashCode() {
int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}

最佳答案

您可以创建一个新的Map实现,其中包含两个(例如)HashMap。在正常模式下,它将每个操作转发到map1。这是原始 map 。 map2null

当您创建保存点时,您将一个空 map 分配给map2get 操作现在首先转到 map2,如果未找到,则转到 map1put 操作仅针对 map2。当您调用forget时,您再次将null分配给map2

当然,您必须实现Map接口(interface)的所有其他方法。但这应该是一个简单的任务。如果需要,请注意删除(也许您需要一组已删除的键的

提示:您可以使用 java.util.AbstractMap 作为实现的基础。

关于java - 将 Hashmap 恢复为之前的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59742132/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com