免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2273 | 回复: 5
打印 上一主题 下一主题

[算法] (Java 相关) 如何计算结构体的哈希值 [复制链接]

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-19 23:50 |只看该作者 |倒序浏览
本帖最后由 __BlueGuy__ 于 2012-10-19 23:54 编辑

以前都没注意过这里
还真不知道结构体的哈希值怎么计算,怎么计算能保证结构体的哈希值唯一
有重码怎么办??...


public int hashCode()
   {
      return 7 * name.hashCode() + 11 * new Double(salary).hashCode() + 13 * hireDay.hashCode();
   }


public boolean equals(Object otherObject)
   {
      // a quick test to see if the objects are identical
      if (this == otherObject) return true;

      // must return false if the explicit parameter is null
      if (otherObject == null) return false;

      // if the classes don't match, they can't be equal
      if (getClass() != otherObject.getClass()) return false;

      // now we know otherObject is a non-null Employee
      Employee other = (Employee) otherObject;

      // test whether the fields have identical values
      return name.equals(other.name) && salary == other.salary && hireDay.equals(other.hireDay);
   }

   
   public String toString()
   {
      return getClass().getName() + "[name=" + name + ",salary=" + salary + ",hireDay=" + hireDay
            + "]";
   }

   private String name;
   private double salary;
   private Date hireDay;

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
2 [报告]
发表于 2012-10-19 23:56 |只看该作者
本帖最后由 __BlueGuy__ 于 2012-10-19 23:57 编辑

我知道了,hash表我都忘完了 ,...

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-10-19 23:57 |只看该作者
哈希值不需要唯一, 唯一的是key自身, equals比较的是key, 不是哈希值, 哈希值只是为了让key对应的value落到某一个桶里, 不意味着一个哈希值只对应一个value, 仅此而已.

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
4 [报告]
发表于 2012-10-19 23:59 |只看该作者
哈希值不可能唯一,而是要求尽量唯一

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
5 [报告]
发表于 2012-10-20 00:00 |只看该作者
linux_c_py_php 发表于 2012-10-19 23:57
哈希值不需要唯一, 唯一的是key自身, equals比较的是key, 不是哈希值, 哈希值只是为了让key对应的value落到 ...


JAVA 把我绕晕了...

论坛徽章:
5
技术图书徽章
日期:2013-08-17 07:26:49双子座
日期:2013-09-15 16:46:29双子座
日期:2013-09-25 08:17:09技术图书徽章
日期:2013-09-25 09:11:42天秤座
日期:2013-10-01 16:25:34
6 [报告]
发表于 2012-10-20 00:01 |只看该作者
本帖最后由 __BlueGuy__ 于 2012-10-20 00:03 编辑
bruceteen 发表于 2012-10-19 23:59
哈希值不可能唯一,而是要求尽量唯一


我在 CU发过哈希表的帖子,碰到JAVA就完全蒙了...

不过倒是学会了求结构体的哈希值,以前都求字符串的,...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP