`
dicmo
  • 浏览: 67093 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

String类的hashcode算法

阅读更多
搞了一晚上的equals()方法和hashCode() 与 == 之间的关系
还是可以嘛
未重写equals()比较对象是返回true,则说明两个对象相等(即引用同一个对象) 其hashcode值应该相等。
不同对象,用equals方法肯定是返回false,但是其hashcode可能相等也可能不相等。
== 只能比较基本类型
重写过的equals方法比较内容是否相等。如字符串的比较 是重写了equals方法
String X=“abc”;
String Y=“abc”;
由下面的算法可以得到相同的hashcode
所以 X.equals(Y) 返回true


public class CreateHashCode
{
public static void main(String[] args){

String ss = new String ("abc");
CreateHashCode c1 = new CreateHashCode();
System.out.println(c1.hashcode(ss));  //自己方法
System.out.println(ss.hashCode());  //类库方法 返回结果应该相同 验证后的确相等
}
public int  hashcode(String str){

char[] chars;

chars = str.toCharArray();

int n = chars.length;

int result=0;

for (int i = 0;i<n ;i++ )
{

result+=java.lang.Math.pow(31,n-1-i)*chars[i]; 
                                       //String的hashcode算法

   API中String的hashCode()方法返回:s[0]*31^(n-1) + s[1]*31^(n-2) + ... + s[n-1]


}
return result;
}
}
分享到:
评论
1 楼 rrsy23 2010-12-08  
equals hashcode其实结合HashSet会很有意思的

相关推荐

    HashMap模块源码—— 高效随机存取数据结构 ,文本索引必备

    哈希函数用的是java中String.hashCode()算法(经实际验证其碰撞率极低且相近的文本散列值相邻,存取的效率更高.)。可自动无限增加容量(内存允许)。3、连续10万次不同内容存取效率为,存10万次共耗时约280ms ,取10万次...

    实验05 Java集合.doc

    注意:因为Person类是自定义类,需要重写hashCode()方法和equals()方法,并规定只有姓名和身份证号都相等,则对象相等。 其中计算哈希码的算法:(31 + ((name == null) ? 0 : name.hashCode()))*31 + id (注:...

    数据算法--HadoopSpark大数据处理技巧.pdf

    数据算法--HadoopSpark⼤数据处理技巧 data algorithms部分主题⾃写scala程序实现 SecondarySort (chapter 1) data 2015,1,1,10 2015,1,2,11 2015,1,3,12 2015,1,4,13 2015,2,1,22 2015,2,2,23 2015,2,3,24 2015,2,4...

    易语言-HashMap模块源码—— 高效随机存取数据结构 ,文本索引必备

    哈希函数用的是java中String.hashCode()算法(经实际验证其碰撞率极低且相近的文本散列值相邻,存取的效率更高.) 可自动无限增加容量(内存允许) 3、连续10万次不同内容存取效率为,存10万次共耗时约280ms ,取10万次共...

    java培训机构内部预习文档

    集合框架 Collection、List、Set、Map的接口及其实现类、迭代、Hash 算法与 hashCode 方法、comparable、泛型 chp12.异常 概念、分类、产生、传递、处理、自定义异常 chp13.线程 概念、创建、状态转换、数据共享、...

    Java服务器端开发面试.doc

    Java服务器端开发面试题 Java服务器端开发面试题篇1 Hashcode()和equals(), 明白背后的原理,包括hashcode()的用法,各自的区别,如何,何时覆盖,为何覆盖 区别new String()和 申明的字符串的区别,String不变量,堆...

    java常用代码

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

    leetcode题库-java-interview:Java研发基础相关

    hashCode & equals == & equals this static 基本类型 & 包装类 String 泛型 内部类 集合类 ArrayList & LinkedList 详解 HashMap HashTable ConcurrentHashMap 详解 异常相关 代理机制 JDBC BIO NIO AIO 创建类的...

    涵盖了90%以上的面试题

    为什么重写equals还要重写hashCode? 介绍一下volatile jdk1.5新特性 jdk1.7新特性 jdk1.8新特性 java语言有哪些优点? 同一个.java文件中是否可以有多个main方法 一个".java"源文件中是否可以包括多个类(不是内部类...

    xls-to-dynamic-json:将xls转换为动态json

    xls-to-dynamic-json convert xls to dynamic json. 将xls解析成json. 会将xlsjs生成的json 数组转成key在外的对象,并且会对第三行... hashcode 使用的是bkdrhash算法 json: 会尝试将字符串转成json, 如果转不成就用

    AIC的Java课程1-6章

    第9章 常用类 4课时  理解Object类及其常用方法equals,hashCode和finalize等。  能够使用String,StringBuffer,StringBuilder类创建字符串对象和使用其方法,分辨不同类之间的区别。 ...

    达内 coreJava 习题答案

    public static void main(String[] arge){ System.out.print("请输入年份"); int year; //定义输入的年份名字为“year” Scanner scanner = new Scanner(System.in); year = scanner.nextInt(); if (year||...

    疯狂的java讲义项目源码-java-graph-algorithms:BFS、Dijkstra、EdmondKarp、FloydWarsha

    图形算法实现并与 JUNG Graph Lib 进行比较 该项目是在第三学期 B.Sc 实践任务中的结果。 应用信息科学“图论概念与算法”课程。 由于本次讲座是在德国大学进行的,因此以下文档是由 deepl.com 翻译的。 资源 荣库 ...

    java8源码-putaoo.github.io:putao.github.io

    hashCode与equals) (String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?......) (Arraylist 与 LinkedList 异同、ArrayList 与 Vector 区别...

    java8源码-java-start::seedling::seedling::seedling:学习Java语法过程中的一些案例

    hashCode与equals) (String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?......) (Arraylist 与 LinkedList 异同、ArrayList 与 Vector 区别...

    java_base

    目录Java基础容器并发虚拟机输入输出Java 8编程规范网路操作系统Linux相关数据结构与算法数据结构算法数据库MySQL雷迪斯系统设计设计模式常用框架春天动物园管理员数据通信网站架构面试指南备战面试常见面试题总结 ...

    毕业设计电商网站源码-Hello-World:我在github中的第一个存储库

    毕业设计电商网站源码 推荐几个比较实用的阿里云服务,按需选择:1. ...hashCode与equals) (String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的

    2018秋招java笔试题-javapass:java深入学习资料集锦

    hashCode与equals) (String和StringBuffer、StringBuilder的区别是什么?String为什么是不可变的?、什么是反射机制?反射机制的应用场景有哪些?......) (Arraylist 与 LinkedList 异同、ArrayList 与 Vector 区别...

Global site tag (gtag.js) - Google Analytics