`
MauerSu
  • 浏览: 514011 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

String类的hashcode算法

    博客分类:
  • J2SE
 
阅读更多

源:http://josephmok.iteye.com/blog/631181

评:

搞了一晚上的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]
//api中 for (int i = 0; i < len; i++) {
                h = 31*h + val[off++];
            }  这么写的,这边简化了,1.6如此

}
return result;
}
}

分享到:
评论

相关推荐

    javascript中实现兼容JAVA的hashCode算法代码分享

    Java中String类的hashCode方法采用特定的算法,即:初始时,哈希码值为0,然后以字符为单位,对于字符串中的每一个字符,都使用31乘以当前哈希码,然后加上当前字符的ASCII值,然后更新哈希码。 2. **JavaScript中...

    java中的哈希算法和hashcode深入讲解1

    在String类中,哈希算法的实现主要体现在hashCode()方法中。hashCode()方法的源代码如下所示: ```java public int hashCode() { int h = hash; if (h == 0) { int off = offset; char val[] = value; int len...

    java 中HashCode重复的可能性

    Java 中HashCode重复的可能性 Java 中的 HashCode 重复可能性是 Java 开发中一个常见的问题。 HashCode 是 Java 中一个重要的概念,它用于标识对象的唯一性。然而,Hash Code 有可能重复,这会导致程序出错。下面...

    深入理解Java中HashCode方法

    同时,Java还提供了一些工具类和方法来帮助开发者实现hashCode方法,例如,Guava库中的Hashing类,它提供了多种hashCode算法,例如,MD5、SHA-1等。 Java中的hashCode方法是非常重要的,它直接影响着对象的比较和...

    hashcode和equals的分析

    `hashCode`方法是`Object`类的一个方法,所有Java对象默认都继承自`Object`类。该方法的主要作用是返回一个整数,这个整数通常被用来作为哈希表中元素的索引。 #### 1.1 哈希算法简介 哈希算法是一种将任意长度的...

    hashcode与eqault比较

    3. **考虑效率**:在实现`hashCode`时,应该尽可能地让不同的对象生成不同的哈希码,但同时也需要考虑算法的效率。 综上所述,正确理解和使用`equals`和`hashCode`方法对于编写高质量的Java程序至关重要。通过对这...

    java集合、常用类和String[参照].pdf

    在给定的文件中,我们重点关注的是Java集合框架、常用类以及String的相关知识。 首先,集合(Collections)是Java中用于存储一组对象的容器,其长度可变,允许存放不同类型的元素。集合类都位于`java.util`包下,...

    hashcode使用方法

    在Java编程语言中,`hashCode` 方法是对象类 `Object` 的一部分,用于生成一个整数,通常用作基于哈希的数据结构(如哈希表)中的索引。为了确保数据结构的高效性,正确地重写 `hashCode` 方法至关重要。 #### 基本...

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

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

    用Java语言实现RSA加密算法

    BigInteger temp_val = BigInteger.valueOf(temp_str.hashCode()); BigInteger temp_val0 = temp_val.modPow(BigInteger.valueOf(pub_key), BigInteger.valueOf(M)); result[i] = temp_val0.toString(); } ...

    数据结构与算法1

    数据结构与算法是计算机科学的基础,对于理解和优化程序性能至关重要。在Java中,数据结构的运用体现在各种集合框架中,如Map接口。Map是存储键值对的数据结构,提供了keySet()和entrySet()两个方法来遍历其内容。 ...

    JAVA编程高级-工具类.pdf

    `String`类是不可变的,这意味着一旦创建了一个`String`对象,它的值就不能再改变。`String`类提供了大量的方法来操作字符串,例如`concat()`、`substring()`、`replace()`等。 - **StringBuffer与StringBuilder类...

    大厂真题之菜鸟网络-Java初级.pdf

    以下是关于 Java 基础知识点的总结,包括 ==、equals 和 hashCode 的区别、基本数据类型、多态、字符串类、内部类等。 1. ==、equals 和 hashCode 的区别 在 Java 中,==、equals 和 hashCode 是三种不同的比较...

    文件打散算法

    ### 文件打散算法详解 #### 一、引言 在互联网技术中,为了提高文件的存取效率和系统的稳定性,通常会采用各种算法对文件进行处理。其中,“文件打散算法”是一种常用的策略,用于将文件按照特定规则分布存储到...

    StringManipulation:Java中的字符串处理算法

    `StringManipulation`这个项目显然专注于研究和实现Java中的字符串处理算法。下面将详细介绍Java中常见的字符串处理技术及其背后的原理。 一、字符串的创建与初始化 在Java中,字符串是对象,可以通过以下方式创建...

    几种简单的负载均衡算法及java实现1

    int hash = clientIp.hashCode(); String server = null; for (String ip : IpMap.serverWeightMap.keySet()) { if (hash % IpMap.serverWeightMap.size() == IpMap.serverWeightMap.get(ip)) { server = ip; ...

    java中hashcode()和equals()的详解.docx

    例如,在`String`类中,`equals()`方法比较的是两个字符串的内容是否相同。 - **Java语言对`equals()`的要求**: - 对称性:如果`x.equals(y)`返回`true`,那么`y.equals(x)`也应该返回`true`。 - 反射性:对于...

    javahashcode()和equals()和==的介绍和区别.pdf

    首先,`hashCode()`是一个方法,存在于Java的`Object`类中,其目的是为了提供一种快速的哈希算法,将对象映射到一个整数值。这个值通常用于哈希表,如Java的`HashMap`或`HashSet`,以确定对象在内部存储的位置。哈希...

    Java面试问题整理.docx

    Java 面试问题整理中涵盖了 Java 基础知识、equals 和 hashCode 的区别、Math 类的使用、String 类的特点等多个方面的知识点。 一、Java 基础知识 * JDK 和 JRE 的区别:JDK(Java Development Kit)是 Java 的...

Global site tag (gtag.js) - Google Analytics