问题标签 [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.

0 投票
11 回答
595062 浏览

java - 在 Java 中覆盖 equals 和 hashCode 时应该考虑哪些问题?

equals覆盖和时必须考虑哪些问题/陷阱hashCode

0 投票
6 回答
1222 浏览

c# - What is the "best" canonical implementation of Equals() for reference types?

Implementing Equals() for reference types is harder than it seems. My current canonical implementation goes like this:

I think that this covers all corner (inheritance and such) cases but I may be wrong. What do you guys think?

0 投票
7 回答
10863 浏览

c# - 编写等于运算符时处理 null 的最佳方法

可能重复:
如何在没有无限递归的情况下检查“==”运算符重载中的空值?

当我为对象重载 == 运算符时,我通常会编写如下内容:

如果您不向下转换为对象,则该函数会递归到自身,但我想知道是否没有更好的方法?

0 投票
20 回答
259600 浏览

java - 集合的 hashCode 方法的最佳实现

我们如何决定hashCode()集合方法的最佳实现(假设 equals 方法已被正确覆盖)?

0 投票
9 回答
5668 浏览

java - Java equals():反映还是不反映

这个问题与为具有大量字段的对象覆盖 equals() 方法特别相关。首先,让我说这个大对象不能在不违反 OO 原则的情况下分解成多个组件,所以告诉我“没有一个类应该有超过 x 个字段”是没有帮助的。

继续前进,当我忘记检查其中一个字段是否相等时,问题就解决了。因此,我的 equals 方法不正确。然后我想使用反射:

这篇文章的目的不一定是重构代码(这甚至不是我正在使用的代码),而是获取关于这是否是一个好主意的输入。

优点:

  • 如果添加了新字段,则会自动包含该字段
  • 该方法比 30 个 if 语句简洁得多

缺点:

  • 如果添加了一个新字段,它会自动包含在内,有时这是不可取的
  • 性能:这必须更慢,我觉得没有必要打破分析器
  • 在比较中将某些要忽略的字段列入白名单有点难看

有什么想法吗?

0 投票
7 回答
1797 浏览

java - 如何从对象的地址计算 hashCode()?

在 Java 中,我有一个VertexJava3D 类的子类Point3f。现在根据其坐标值进行Point3f计算,但对于我的类,我想更严格:两个顶点只有在它们是同一个对象时才相等。到现在为止还挺好:equals()Vertex

我知道这违反了 的合同equals(),但是因为我只会将顶点与其他顶点进行比较,所以这不是问题。

现在,为了能够将顶点放入 aHashMap中,该hashCode()方法必须返回与 一致的结果equals()。它目前是这样做的,但它的返回值可能基于 的字段Point3f,因此会为Vertex具有相同坐标的不同对象提供哈希冲突。

因此,我想基于对象的地址,而不是从的字段hashCode()中计算它。Vertex我知道这个Object类是这样做的,但我不能调用它的hashCode()方法,因为Point3f它会覆盖它。

所以,实际上我的问题是双重的:

  • 我什至要这么浅equals()
  • 如果是,那么,我如何获取对象的地址来计算哈希码?

编辑:我只是想到了一些东西......我可以int在对象创建时生成一个随机值,并将其用于哈希码。这是一个好主意吗?为什么不)?

0 投票
3 回答
34411 浏览

java - 是否有 Java 标准的“null 或 equal”静态方法?

为了节省一些输入并澄清我的代码,是否有以下方法的标准版本?

0 投票
8 回答
255210 浏览

java - Overriding the java equals() method - not working?

I ran into an interesting (and very frustrating) issue with the equals() method today which caused what I thought to be a well tested class to crash and cause a bug that took me a very long time to track down.

Just for completeness, I wasn't using an IDE or debugger - just good old fashioned text editor and System.out's. Time was very limited and it was a school project.

Anyhow -

I was developing a basic shopping cart which could contain an ArrayList of Book objects. In order to implement the addBook(), removeBook(), and hasBook() methods of the Cart, I wanted to check if the Book already existed in the Cart. So off I go -

All works fine in testing. I create 6 objects and fill them with data. Do many adds, removes, has() operations on the Cart and everything works fine. I read that you can either have equals(TYPE var) or equals(Object o) { (CAST) var } but assumed that since it was working, it didn't matter too much.

Then I ran into a problem - I needed to create a Book object with only the ID in it from within the Book class. No other data would be entered into it. Basically the following:

All of a sudden, the equals(Book b) method no longer works. This took a VERY long time to track down without a good debugger and assuming the Cart class was properly tested and correct. After swaapping the equals() method to the following:

Everything began to work again. Is there a reason the method decided not to take the Book parameter even though it clearly was a Book object? The only difference seemed to be it was instantiated from within the same class, and only filled with one data member. I'm very very confused. Please, shed some light?

0 投票
2 回答
510 浏览

java - 没有 HashCode 的错误,等于 Eclipse

我正在寻找一个非常具体的 eclipse 插件,它会告诉我我的项目中的一个类是否没有实现 hashCode 或/和 equals 方法。

有人知道这样的插件吗?

谢谢

0 投票
78 回答
701988 浏览

javascript - 如何确定两个 JavaScript 对象的相等性?

严格相等运算符会告诉您两个对象类型是否相等。但是,有没有办法判断两个对象是否相等,就像Java 中的哈希码值一样?

堆栈溢出问题JavaScript 中是否有任何类型的 hashCode 函数?与this question类似,但需要更学术的答案。上面的场景说明了为什么有必要拥有一个,我想知道是否有任何等效的解决方案