问题标签 [equals]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 在 C 中是否可以直接进行 int 和 float 之间的关系比较?
我正在使用 Visual Studio 6 和一些用 c 编写的旧代码。我发现代码看起来像这样的问题..
这是一个有效的比较吗?是否有可能在运行时分配浮点数为 3.0000001,这会失败?
java - 优化 equals() 方法
该equals()
方法(就此而言,也是该compareTo()
方法)可以成为性能热点(例如,在高流量中HashMap
)。我想知道人们在证明必要时采用了哪些技巧来针对这些情况优化这些方法。
例如,IntelliJ IDEA 生成以下内容:
您还遇到什么可以作为编写良好执行equals()
方法的指南?
unit-testing - 是否应该覆盖等于在单元测试中断言对象相等的方法?
假设我们通过断言结果对象的所有属性与预期结果对象的属性相等来测试方法的结果。我们是否应该实现 equals 方法并使用 Assert.AreEqual(expectedResult, actualResult)... 但是 equals 在生产代码中可能意味着不同的东西。
哪个是最佳实践?
- 通过重写的 equals 方法断言对象的相等性
或者
- 断言所有属性的相等性
scala - 在 HashSet 中使用替代比较
在创建用于一种 HatTrie 的 HashSet[Array[Byte]] 时,我偶然发现了这个问题。
显然,数组上的标准 equals() 方法检查身份。如何为 HashSet 提供使用 .deepEquals() 来检查集合中是否包含元素的替代比较器?
基本上,我希望这个测试通过:
我无法将 Array[Byte] 包装到另一个对象中,因为它们有很多。没有为此目的编写新的 HashSet 实现,我能做些什么吗?
java - 为什么这些 == 而不是 `equals()`?
我对 Java 处理数字的方式==
以及equals()
何时处理int
,Integer
和其他类型的数字有点困惑。例如:
输出(也许你应该先做出猜测):
X == Y
不编译是可以预料的,是不同的对象 。- 我有点惊讶,因为 9 默认情况下是 an
Y == 9
,并且 1) 甚至没有编译。请注意,您不能将 a放入期望 a 的方法中,但在这里它们是相等的。true
int
int
Short
- 出于与两个相同的原因,这令人惊讶,但似乎更糟。
- 毫不奇怪,
x
自动装箱到和Integer
. - 这并不奇怪,因为不同类中的对象不应该是
equal()
. - 什么??
X == y
是true
但是X.equals(y)
是false
?不应该==
总是比 更严格equals()
吗?
如果有人能帮助我理解这一点,我将不胜感激。为什么 == 和 equals() 会这样?
编辑: 我已将 9 更改为 9000 以表明此行为与从 -128 到 127 的整数的任何异常行为方式无关。
第二次编辑: 好的,如果你认为你理解这些东西,你应该考虑以下几点,以确保:
输出:
原因,据我所知:
- 不同的例子,如此不同。
X
未装箱,然后是相同的值,所以相等。- 相同的价值,如此平等。
y
不能装箱,Integer
所以不能相等。
c# - 是否有完整的 IEquatable 实现参考?
我在这里关于 SO 的许多问题都与 IEquatable 实现有关。我发现它很难正确实现,因为在幼稚的实现中有很多隐藏的错误,而且我找到的关于它的文章也很不完整。我想找到或写一份明确的参考资料,其中必须包括:
- 如何正确实现 IEquatable
- 如何正确覆盖 Equals
- 如何正确覆盖 GetHashCode
- 如何正确实现 ToString 方法
- 如何正确实现运算符 ==
- 如何正确实现运算符 !=
这么完整的参考文献已经存在了?
PS:即使是MSDN 参考对我来说似乎也有缺陷
.net - 哈希集和所有成员相同的类的不同实例
假设我有一个名为 myclass 的类。
在我的代码中,我有两个 myclass 实例,myclass1 和 myclass2。它们的一切(公共和私有)属性都是相同的。
如果我尝试将它们都添加到 HashSet 中,它会同时添加还是只添加一个?如果它同时添加而我不想要它,我可以在 myclass 定义中覆盖 equals 并且 HasSet 会知道如何使用它吗?
scala - Scala 的 BigDecimal 是否违反了 equals/hashCode 合同?
根据Ordered
trait
需求,equals
ScalaBigDecimal
类上的方法与顺序一致。但是,哈希码只是从包装中获取的java.math.BigDecimal
,因此与 equals 不一致。
我找不到任何关于这是一个已知问题的参考。我错过了什么吗?
comparison - 比较两个对象并检查 null
JDK中是否有一种方法可以比较两个对象是否相等,并考虑空值?像这样的东西:
自己编写这种方法似乎很愚蠢,因为我认为它必须已经存在于某个地方。
c++ - 使一个对象等于另一个对象
我知道当声明其中一个对象时,您可以使两个对象彼此相等。我在我的程序中对此进行了测试。但是当我去使用赋值语句时,它吓坏了。您可以使用赋值语句使两个对象彼此相等,还是只能在声明一个对象时才这样做?