在Map中存储和比较树节点

时间:2015-03-20 19:25:48

标签: java dictionary data-structures

我有以下内容:

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它会告诉我它们是否相等

1 个答案:

答案 0 :(得分:1)

使用您自己的对象。除非您可以修改它,否则不要使用Node对象。使用您自己创建的Object并覆盖equals()(和hashCode())方法,以确定两个此类对象是否唯一。然后,就containsKey()和任何其他方法而言,一切都将按预期工作。

相关问题