`
corleonelu
  • 浏览: 9525 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

java string的hashcode

 
阅读更多

 

 

 

public int hashCode() {
	int h = hash;
	if (h == 0) {
	    int off = offset;
	    char val[] = value;
	    int len = count;

            for (int i = 0; i < len; i++) {
                h = 31*h + val[off++];
            }
            hash = h;
        }
        return h;
    }
 

实际上是使用霍纳法则计算h(s)=\sum_{i=0}^{n-1}s[i] \cdot 31^{n-1-i}

s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1] 的值

 

选择31是因为他为素数,且他等于左移5位-1的值,vm会自动做这种优化

 

http://book.douban.com/subject/1610337/  lafore的这本书写的很人性化,没有太多公式,适合入门,第11章讲到了这部分

 

http://en.wikipedia.org/wiki/Java_hashCode()

http://stackoverflow.com/questions/299304/why-does-javas-hashcode-in-string-use-31-as-a-multiplier

http://www.ibm.com/developerworks/java/library/j-jtp05273/index.html

分享到:
评论

相关推荐

    string-hashcode:java.lang.String.hashCode

    安装npm install string-hashcode 例子var hashCode = require ( 'string-hashcode' ) ;var s = 'abc' ;console . log ( s . hashCode ) ; // undefinedvar code = hashCode ( s ) ;console . log ( s . hashCode ) ...

    java 中HashCode重复的可能性

    主要介绍了java 中HashCode重复的可能性的相关资料,这里提供实例及测试代码,需要的朋友可以参考下

    深入理解Java中HashCode方法

    主要介绍了深入理解Java中HashCode方法,具有一定借鉴价值,需要的朋友可以参考下

    hash-generator-js:一个Vue.js应用程序,其中包含Java中String类的hashCode方法的javascript实现

    哈希生成器js 一个Vue.js应用程序,其中包含Java中String类的hashCode方法的javascript实现构建设置# install dependenciesnpm install# serve with hot reload at localhost:8080npm run dev# build for production...

    TEH:Java Tostring Equals Hashcode with annotations

    TEH 使用注解来实现 toString、equals 和 hashCode,并强制执行这 2 条规则 任何用于 hashCode 的属性都将用于 equals 和 toString 用于 equals 的任何属性都将用于 toString 注释是 @ToString @ToStringEquals ...

    java常用代码

    17.SetAndList.java set的简单操作极其hashcode应用 18.Singleton.java java设计模式之单例模式 19.Factory.java 设计模式之工厂模式 20.Swing.java 介绍了java的图形应用 --课程包括了java SE的大部分常用类...

    javascript的hashCode函数实现代码小结

    网上找了好一轮,找到个比较像样而且足够短的 hashCode 实现,是从 Java 的 hashCode 中借鉴而得的。原理见 Java hashCode() ,也可以跟这里的 Java String 的源码 参照对比一下

    java业务层框架开发ibatis(java源码)

    // JBuilder API Decompiler stub source generated from class file // 2010-1-15 ... public PreparedStatement prepareStatement(String sql, String[] columnNames) throws SQLException { return null;} }

    java集合知识-map、set等

    是通过对象的hashCode和equals方法来完成对象唯一性的。 如果对象的hashCode值不同,那么不用判断equals方法,就直接存储到哈希表中。 如果对象的hashCode值相同,那么要再次判断对象的equals方法是否为true。 ...

    java 面对对象编程.pdf.zip

    Java 常见类 Object Object 类的常见方法有哪些? == 和 equals() 的区别 hashCode() 有什么用? 为什么要有 hashCode? 为什么重写 equals() 时必须重写 hashCode() 方法? String String、StringBuffer、...

    Java基础知识点总结.docx

    &lt; java.lang &gt;String字符串:★★★☆ 71 &lt; java.lang &gt;StringBuffer字符串缓冲区:★★★☆ 73 &lt; java.lang &gt;StringBuilder字符串缓冲区:★★★☆ 74 基本数据类型对象包装类★★★☆ 75 集合框架:★★★★★,...

    实验05 Java集合.doc

    "hobby"-"爱学Java" 3)对集合进行遍历,分别打印集合中的每个元素的键与值; 4)打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。 四、思考题 1、集合中的List、...

    java面试常见问题(超详细).pdf

    Java中的String类是可变的还是不可变的? Java中的equals方法和hashCode方法有什么关系? Java中什么是重载【Overloading】?什么是覆盖【Overriding】?它们有什么区别? Java中什么是多态?如何实现多态? Java中...

    Java面试题.docx

    1、java中==和equals和hashCode的区别 2、int与integer的区别 3、String、StringBuffer、StringBuilder区别 4、什么是内部类?内部类的作用 5、进程和线程的区别 6、final,finally,finalize的区别 7、...

    Java面试经典题,对JAVA面试很有帮助

    10.String、String StringBuffer 和 StringBuilder 的区别是什 么? 11.ArrayList和linkedList的区别 12.HashMap和HashTable的区别 13.Collection包结构,与Collections的区别 14.Java的四种引用,强弱软虚 15.泛型...

    Java 最常见的 208 道面试题:第一模块答案

    两个对象的 hashCode()相同,则 equals()也一定为 true,对 吗? final 在 java 中有什么作用? java 中的 Math.round(-1.5) 等于多少? String 属于基础的数据类型吗? java 中操作字符串都有哪些类?它们之间有...

    -互联网Java面试重点难点.rar

    3. 两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? 4. final 在 java 中有什么作用? 5. java 中的 Math.round(-1.5) 等于多少? 6. String 属于基础的数据类型吗? 7. java 中操作字符串都有...

    java面试题.docx

    两个对象的 hashCode()相同,则 equals()也一定为 true,对吗? final 在 java 中有什么作用? java 中操作字符串都有哪些类?它们之间有什么区别? 如何将字符串反转? String 类的常用方法都有那些? 接口和抽象...

    获取字符串的哈希-JavaScript开发

    与Java的String#hashCode()类似。 安装$ npm install @ sindresorhus / string-hash用法const stringHash string-hash获取字符串的哈希值使用非加密哈希函数FNV-1a。 与Java的String#hashCode()类似。 安装$ ...

    Java测试题2答案

     } } &lt;br&gt;答案::填空第1题 x=10,a=3,b=4,c=5 填空第2题 java.util 填空第3题 (public )(static )(void)(main)(String args[]) 填空第4题 1 填空第5题

Global site tag (gtag.js) - Google Analytics