GetHashCode 方法 并不能保证值唯一


我在做分词模块时,对每个词分配hashcode,但是发现其值并非唯一;
比如 "公出"和"古色"这两个词得到的值都是 6237203.

为什么会出现这样的问题呢,其实在MSDN里面有解释:

备注

GetHashCode 的行为取决于它的实现,此实现可能会从一个公共语言运行库版本更改为另一个版本。原因可能是为了提高 GetHashCode 的性能。如果要求 GetHashCode 的行为不变,请使用您自己的、确定不会改变的实现来重写 GetHashCode 的运行库实现。

没错就是因为他为了优化速度,所以使用了不同的算法,导致了同一值的出现,解决方案就如他说得,自己写一个固定算法了.

各位兄弟,以前如果用了这个方法,可就得改一改了.

 程序猿们,我也跟风开了网店,主要经营土特产,云南核桃,四川正宗土鸡蛋。有需要的就支持一下小店哈  七彩山川美食(http://qcsc.taobao.com) 

原文地址:https://www.cnblogs.com/leiyu1980/p/440075.html