我有以下内容:
Map<MyNode, MyNode> nodes = new HashMap<MyNode, MyNode>();
这个地图一次不会被超过100个节点填充,所以我真的不必担心开销。但我想要做的是当我创建一个新节点,并设置节点的内容。我想检查地图中是否已存在具有完全相同内容的节点。我原来在做什么
maps.containskey();
但我意识到他们没有相同的签名。因此即使可能存在具有完全相同内容的节点,对于Java它们也是不同的。我的问题是如何在Map中存储节点,并能够检查具有完全相同内容的节点是否已经存在?
class MyNode
{
boolean end = false;
Map<String, MyNode> edges = new HashMap<String, MyNode>();
}
我没有写自己的哈希码或相等。我想如果我使用containskey它会告诉我它们是否相等
答案 0 :(得分:1)
使用您自己的对象。除非您可以修改它,否则不要使用Node
对象。使用您自己创建的Object
并覆盖equals()
(和hashCode()
)方法,以确定两个此类对象是否唯一。然后,就containsKey()
和任何其他方法而言,一切都将按预期工作。