我有两棵树,其中包含节点,在我创建它们之后,我将第一棵树的所有节点放入链表,将第二棵树的所有节点放入 hashmap,作为映射的键。我想从树中找到两个节点,它们具有相同的变量,称为:状态(长类型)。所以在创建之后我调用:
List<Node> list;
HashMap<Node, Node> hashtable;
...create nodes, take them to the collections
for(Node n : list){
if(hashtable.containsKey(n)){
//doSomething
}
}
我正在使用 hashmap,因为它非常快,很艰难,我有 4000000(400 万)个节点。我已经覆盖了 Node 类的 equals 方法,但似乎 containskey 方法检查了哈希码,但据我了解,它只需要检查指向 java 参考的 equals 方法链接。所以问题是我应该使用什么数据结构来检查这个东西,或者我应该如何重写代码?
这是我的equals方法:
@Override
public boolean equals(Object obj) {
if(obj instanceof Node){
Node node = (Node)obj;
return (states == node.getStates());
}
return false;
}