我在对象中定义了一个自定义运算符:
class CharNode {
String char = "x";
String color = "#000000";
String backgroundColor = "none";
CharNode(this.char) { }
bool operator ==(CharNode other) {
return (other.char == char && other.backgroundColor == other.backgroundColor && other.color == color);
}
}
当我比较两个CharNodes时,它可以工作(示例):
CharNode cn1 = new CharNode("A");
CharNode cn2 = new CharNode("A");
print((cn1 == cn2).toString());
打印正确。
问题在于HashMap(示例)并在其中找到对象:
HashMap<CharNode, int> map = new HashMap<CharNode, int>();
map[cn1] = 0;
print((map.contains(cn2)).toString());
打印错误。
问题是:如何使HashMap使用我的自定义运算符?我必须使用forEach吗?
最佳答案
除了定义相等性之外,还必须提供hashCode实现。
作为HashMap docs状态:
关于hashmap - HashMap包含方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26788105/