我在对象中定义了一个自定义运算符:

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/

10-09 12:38