我有以下内容:
Map<MyNode, MyNode> nodes = new HashMap<MyNode, MyNode>();
这张 map 一次不会填充超过 100 个节点,所以我真的不必担心开销。但我想做的是当我创建一个新节点并设置该节点的内容时。我想检查 map 中是否已存在具有完全相同内容的节点。我本来是在做
maps.containskey();
但我意识到他们没有相同的签名。因此,即使可能存在内容完全相同的 Node,但对于 Java 来说它们是不同的。我的问题是如何在 map 中存储节点,并能够检查具有完全相同内容的节点是否已经存在?
class MyNode
{
boolean end = false;
Map<String, MyNode> edges = new HashMap<String, MyNode>();
}
我还没有编写自己的哈希码或同等的哈希码。我想如果我使用 containskey 它会告诉我它们是否相等
最佳答案
使用您自己的对象。不要使用 Node
对象,除非您可以修改它。使用您自己创建的 Object
并重写 equals()
(和 hashCode()
)方法来确定两个此类对象是否唯一。然后,对于 containsKey()
和任何其他方法,一切都将按预期工作。
关于java - 在 Map 中存储和比较树节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29174381/