java - 在 Map 中存储和比较树节点

标签 java dictionary data-structures

我有以下内容:

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/

相关文章:

java - Mac OS 上安装 Java 的所有位置之间有何区别?

java - 搜索通配符 ('<' , '>' ), 计数并得到在java中的位置

java - TableView<T> 不显示 ObservableList<T> 对象的内容

python - 在 Python : Create a dictionary from a list of keys, 中但将所有值设置为 0?

python - csv 到特定列表中的字典(当重复键时添加值)

java - 聚合和关联在实现上的区别

python - 循环嵌套列表字典以计算键的出现次数

java - JAVA 中的递归前序遍历运行直至堆栈溢出(BST)

algorithm - 如何从半边结构中去除边?

algorithm - 找到圆圈中的索引,使旅行者可以完成一轮