A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭运川 中级黑马   /  2014-2-8 09:10  /  1297 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭运川 于 2014-2-10 09:04 编辑

hashCode();里面的哈希值是否是唯一的?在下面的hashCode()中返回的return name.hashCode() + age*37;的值是多少,在哈希表中是如何计算的?
class Person
{
        private String name;
        private int age;
        Person(String name,int age)
        {
                this.name = name;
                this.age = age;

        }

        public int hashCode()
        {
                System.out.println(this.name + "......hashcode");
                //return name.hashCode() + age;
                return name.hashCode() + age*37;//为保证hashcode返回值得唯一性age可以乘以一个数
        }
}

4 个回复

倒序浏览
*37是为了保证增大哈希值随着age的变化而变化
回复 使用道具 举报
这一点知道,我疑惑的是哈希值是自己随便指定的,还是有自己的规律,哈希值得作用是什么?
回复 使用道具 举报
郭运川 发表于 2014-2-8 11:29
这一点知道,我疑惑的是哈希值是自己随便指定的,还是有自己的规律,哈希值得作用是什么? ...

只要覆盖过hashCode方法 随便定 作用是保证对象的唯一性
回复 使用道具 举报
那什么叫哈希表呀?它是不是固定的值?作用是什么?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马