Sco*_*ttF 0 comparison set dart flutter
我只是在 Dart 中塞了一堆MyClass东西Set。MyClass没有实现Comparable,也没有==定义运算符。它编译得很好。
为了Set正确检测重复项,我是否必须实现Comparable接口,或者只是覆盖==运算符?
所有 Dart 类都源自Object,它确实提供了operator ==和hashCode。 Object的默认实现检查对象身份;你的类的一个实例只会与它自己比较。
如果您希望两个不同的实例能够比较相等,那么您需要:
operator ==和hashCode。Set的默认实现是 a LinkedHashSet,它不使用Comparable. (有一个SplayTreeSet实现Comparable但是,确实使用了,但是查找和插入将是 O(log n) 而不是 O(1)。)LinkedHashSet构造函数或HashSet构造函数并传递适当的回调以进行相等和哈希码计算。