问题标签 [gethashcode]

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 投票
4 回答
8916 浏览

mysql - Hibernate n:m extractHashCode 抛出 NullPointerException

使用休眠插入对象时出现以下异常。从数据库中读取就像一个魅力。我使用MySQL 5.5作为数据库提供程序和hibernate 3.6.5

我有以下数据库架构:

其中cell和location中的id是主键,servingCell、neighbourCell和location是cellatlocation中的复合主键。

我要插入的类:Cell.java

位置.java

CellAtLocation.java

最后是主键映射本身 CellAtLocationPk.java

0 投票
2 回答
3466 浏览

c# - 覆盖等式运算符

我已经实现了一个重载==and!=运算符的类。

这似乎工作正常;但是,我收到警告'type' defines operator == or operator != but does not override Object.Equals(object o)

好的,所以我实现了 Equals。但现在我得到了警告'type' defines operator == or operator != but does not override Object.GetHashCode()

这会在某个时候结束吗?==或者我是否只是因为我想超载而陷入永无止境的需求轨迹!=

0 投票
2 回答
3015 浏览

c# - 字典项目的 GetHashCode

我为我的一个班级重写了 Equals 方法。在该方法中,我检查每对字典与另一个实例的字典的相等性,如下所示

现在,我需要重写 GetHashCode 方法以及建议的方法。

我是否需要对字典的所有键或键加值都这样做?

基本上,以下是好的还是矫枉过正?

0 投票
1 回答
1785 浏览

c# - 用一个字段覆盖类中的 Equals 和 GetHashCode

我有一堂课:

我有派生类:

AbstractDictionaryObject只有一个共同领域:LangId.
我认为这不足以重载方法(正确地)。
如何识别对象?

0 投票
3 回答
1092 浏览

nhibernate - 这是否解决了 Nhibernate 身份问题和 GetHashCode 问题?

我提出的解决方案涉及相当多的代码,但是假设您安装了 SqLite,您可以将其全部复制并粘贴到 VS 测试解决方案中,并且您应该能够自己运行测试。

由于我一直在努力解决使用 Nhibernate 的对象身份与对象相等和数据库身份问题,因此我阅读了各种帖子。但是,我无法清楚地了解如何结合集合正确设置对象标识。基本上,我得到的最大问题是,一旦将对象添加到集合中,它的标识(由 GetHashCode 派生)方法就不能改变。实现 GetHasHCode 的首选方法是使用业务密钥。但是,如果业务密钥不正确怎么办?我想用它的新业务密钥更新该实体。但是后来我的集合不同步,因为我违反了该对象身份的不变性。

以下代码是解决此问题的建议。但是,由于我当然不是 NHibernate 专家,也不是非常有经验的开发人员,因此我很乐意收到更多资深开发人员的评论,这是否是一种可行的方法。

重要编辑!我现在考虑我建议的方法,正如已经指出的那样不是正确的方法。对于我面临的困境,我提供了不同的答案。

0 投票
3 回答
2139 浏览

c# - .GetHashCode() 是否应该为内存中具有不同引用的两个对象返回相同的值?

我需要为我的一种类型覆盖 Equals() 方法,但似乎我还必须覆盖 GetHashCode() 方法。

我不确定:

如果我有 Animal 类型并且我有 2 个 Animal 实例,它们基本上是相同的(相等)Cats;像:

我是否应该实现 GetHashedCode() 来为 cas_01 和 cat_02 保留相同的值,即使它们代表内存中的不同引用?

它是 GetHashCode() 应该工作的方式吗?

谢谢

0 投票
4 回答
1113 浏览

c# - C# .NET GetHashCode 函数问题

嗨,我有一个有 6 个字符串属性的类。一个唯一的对象将至少对这些字段中的一个具有不同的值

为了实现 IEqualityComparer 的 GetHashCode 函数,我将连接所有 6 个属性并在结果字符串上调用 GetHashCode。

我有以下疑问:

  1. 是否有必要在唯一值上调用 GetHashcode?
  2. 六个属性的串联操作会不会导致比较慢?
  3. 我应该使用其他方法吗?
0 投票
3 回答
360 浏览

c# - 我应该遵循哪些规则来确保 GetHashCode() 方法返回对象的唯一值?

我应该遵循哪些规则来确保 GetHashCode() 方法返回对象的唯一值?

例如:

  • 我应该包括一些私人成员进行计算吗?
  • 我应该乘而不是求和吗?
  • 我可以确定我正在为特定对象图生成唯一的哈希码吗?等等
0 投票
2 回答
103 浏览

c# - GetHashCode 应该取决于类型吗?

首先,我使用这里GetHashCode描述的算法。现在,想象以下(人为的)示例:

如果我的 aFoo和 aDerivedFoo每个属性的值都相同,那么它们将具有相同的哈希码。这意味着我可以在 Linq 中拥有HashSet<Foo>或使用该Distinct方法,并且这两个实例将被视为相同。

我可能只是误解了使用,GetHashCode但我希望这两个实例具有不同的哈希码。这是一个无效的期望还是应该GetHashCode在计算中使用该类型?(或者DerivedClass也应该覆盖GetHashCode)?

PS我意识到有很多关于这个主题的问题,但我还没有发现直接回答这个问题的问题。

0 投票
1 回答
872 浏览

delphi - Delphi Prism:如何覆盖 GetHashCode 和 Equals 方法以使 IndexOf 正常工作?

我不确定我这样做是否正确。我在列表框中有一个对象列表,需要使用 IndexOf 来获取列表中对象的索引。

alrm 是 TAlarm 类的对象。

基于 StackOverflow C# 问题(How Can I Get the Index of An Item in a ListBox?),我尝试覆盖 GetHashCode 和 Equals 方法,但它仍然无法正常工作。

重写方法:

这就是我填充 AlarmListBox 的方式:

编译器编译没有任何错误,但是当我逐行调试程序时,它总是返回 -1 并且这些被覆盖的方法永远不会被调用或触发。

我是否正确实施了这些覆盖?如果没有,我应该如何覆盖它们?

示例代码或提示或线索将不胜感激。谢谢,

更新:对于大卫赫弗南和其他评论或回答的人,我认为问题可能是我传递了两个不同的对象,正如 Rob 的最后评论所述。我确实使用 TAlarmGroup 填充列表框(UI),但将 TAlarm 传递到 IndexOf,尽管它们都是相同的类。这可能是我的问题。我真正想做的是用 TAlarmGroup 对象填充列表框,并通过 listbox.indexof 通过传入字符串(标记名)来搜索对象位置。这就是它在 Delphi XE 上的工作方式,效果很好。上面的代码不是实际的代码。一旦我清理了代码中的混乱,它可能会在不覆盖 GetHashcode 和 Equals 方法的情况下工作。

更新:我想,我在这里偶然发现了一些东西。在 Delphi XE 或更低版本中,ListBox (UI) 提供了一个名为 AddObject 的方法。它的参数分别是一个字符串和一个对象。因此,当我将对象填充到列表框中时,我还提供了与之配套的字符串。当我搜索时,我传入了一个字符串或警报组名称。IndexOf 针对我提供的每个对象的字符串而不是对象的字段 (TagName) 搜索此字符串。在 Delphi Prism 中,listbox 没有与 AddObject 方法类似的方法,但只有 Add 只接受对象作为参数。