gpt4 book ai didi

flutter - Dart Set 如何比较项目?

转载 作者:行者123 更新时间:2023-12-03 04:09:54 31 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How does a set determine that two objects are equal in dart?

(2 个回答)


7 个月前关闭。




我刚塞了一堆MyClassSet 内在 Dart 。 MyClass未实现 Comparable , 并且没有 ==运算符定义。它编译得很好。
为此Set要正确检测重复,我是否必须执行 Comparable接口(interface),或者直接覆盖 ==运算符(operator)?

最佳答案

所有 Dart 类都派生自 Object ,它确实提供了 operator ==hashCode . Object的默认实现检查对象身份;你的类的一个实例将只与它自己比较。
如果您希望两个不同的实例能够比较相等,那么您需要:

  • 实现operator ==hashCode在您的自定义类(class)中。 Set的默认实现是 LinkedHashSet , 不使用 Comparable . (有一个 SplayTreeSet implementation 确实使用了 Comparable ,但是查找和插入将是 O(log n) 而不是 O(1)。)
  • 或者使用 LinkedHashSet constructor HashSet constructor并为相等和哈希码计算传递适当的回调。
  • 关于flutter - Dart Set<E> 如何比较项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62867472/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com