从属性组合哈希是否有意义?

用户名

我正在尝试以正确的方式进行哈希处理(我承认,依靠自动魔术管理,我通常在这里可能有点草率)。我认为我已经控制住了它,但是我不确定这是否是完全正确的方法,或者是否缺少某些内容(是的,我已经阅读了很多页面,但仍然...)。

在我的课堂上,我设计了这样的东西。Segment有意省略了定义,因为我认为我的方法是正确的而不知道。

public class Compound
{
  public Segment PartA { get; set; }
  public Segment PartB { get; set; }
  ...
  public int GetHashCode()
  {
    return PartA.GetHashCode() * PartB.GetHashCode()
  }
}

该方法似乎是安全的,因为整数不会溢出,而是环绕最大值。对我而言,这种方法的优势在于,这两个部分实际上都会影响所产生的哈希。

我想知道在计算时是否应该使用乘法或加法(或完全其他的方法)。我实际上从两个部分的哈希中都得到了什么吗?我说不清楚。

德米特里·拜琴科(Dmitry Bychenko)

是的,这使得如果你想哈希值予以确定SENCE PartAPartB在一般情况下,可能是这样的:

public int GetHashCode()
{
   // hash must not throw exceptions; check for null:
   if (null == PartA) 
     return null == PartB ? 0 : PartB.GetHashCode();
   else if (null == PartB) 
     return PartA.GetHashCode(); 

   // XOR ^ is a better choice: no integer overflow and no bias
   return PartA.GetHashCode() ^ PartB.GetHashCode();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

属性的属性有意义吗?

来自分类Dev

创建仅具有ID属性的实体表是否有意义?

来自分类Dev

在构造函数方法中将类的所有属性作为参数传递是否有意义?

来自分类Dev

空的“ else”子句在C ++中是否有意义?

来自分类Dev

为工厂创建抽象工厂是否有意义?

来自分类Dev

Tomcat的EL Stream API是否有意义?

来自分类Dev

返回Try [Option [String]]是否有意义?

来自分类Dev

根据路径处理websocket是否有意义?

来自分类Dev

在onDestroy()中调用finish()是否有意义?

来自分类Dev

Scala:Option [Boolean]是否有意义?

来自分类Dev

gCloud / GCE磁盘大小警告-是否有意义?

来自分类Dev

在System.js中捆绑是否有意义

来自分类Dev

data = batch ['data']。cuda()。cpu()是否有意义?

来自分类Dev

分别指定“小”和“德尔塔”是否有意义?

来自分类Dev

std :: move是否对堆栈变量有意义

来自分类Dev

使用六核CPU是否有意义?

来自分类Dev

在现代Linux上使用noatime是否有意义?

来自分类Dev

进行这种聚合根设计是否有意义?

来自分类Dev

根据路径处理websocket是否有意义?

来自分类Dev

在同步方法中使用ReadWriteLock是否有意义?

来自分类Dev

对$ scope使用去抖是否有意义?

来自分类Dev

返回存在类型是否有意义?

来自分类Dev

回调返回值是否有意义?

来自分类Dev

在/ boot挂载EFI分区是否有意义?

来自分类Dev

抛出总是被链接的异常是否有意义?

来自分类Dev

使用TaskCompletionSource的这种异步方法是否有意义?

来自分类Dev

是否存在使用 NOT LIKE ANY 有意义的场景?

来自分类Dev

从属性组合获取所有文档

来自分类Dev

PyGTK仍然有意义吗?

Related 相关文章

热门标签

归档