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

hashcode与字符串

    博客分类:
  • J2EE
 
阅读更多
问题1. 不同的字符串可能会有相同的HashCode吗?
答案: 可能。hashcode是用来判断两个字符串是否相等的依据,不同的字符串不可能有相同的hashcode,但不同的hashCode经过与长度的取余,就很可能产生相同的hashCode,就是所谓的哈希冲突.
如:

public static void main(String[] args) {  
        int hash1 = "ABCDEa123abc".hashCode();  
        int hash2 = "ABCDFB123abc".hashCode();  
        System.out.println(hash1);  
        System.out.println(hash2);  
}

output: 
165374702 
165374702

延伸问题: hashcode相同,字符串相同吗?答案是不一定。

问题2. 相同的字符串可能会有不同的HashCode吗

答案: 不可能。

如果你自己重写equals和hashcode方法是可以实现的,但是java规范要求两个equals的对象一定要有相同的hashcode。
String类是jdk里的基础类,是严格遵守规范的,而且是final的,不能继承,所以也没有重写覆盖hashcode方法的可能。
问题3. 相同的字符串每次生成的HashCode都相同吗?
答案: 一定相同。
hashcode是由简单的Hash算法得出来的,根据字符串的值算出来的,每次算出来的结果都相同
分享到:
评论

相关推荐

    Java第6章 字符串 含源代码

    8. **字符串与对象** `hashCode()`方法返回字符串的哈希值,用于散列存储。`compareTo()`方法按照字典顺序比较字符串,`clone()`创建字符串的副本。 9. **国际化** `java.text`包提供了`Format`类族,支持日期、...

    java常用字符串方法网络收集txt版

    - `contentEquals(StringBuffer sb)`: 比较字符串与StringBuilder或StringBuffer的内容是否相同。 - `contentEquals(CharSequence cs)`: 比较字符串与CharSequence的内容是否相同。 13. **空字符串检查** - `...

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

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

    浅谈Java字符串Java开发Java经验技巧共11页.p

    4. **字符串与字符数组**:阐述字符串与char数组之间的转换,以及它们在内存中的表示。 5. **字符串常量池**:解释字符串池的概念,以及如何影响性能和内存管理。 6. **正则表达式**:演示如何在Java中使用正则...

    equals与hashCode方法讲解

    例如,在 String 类中,hashCode 方法的实现是根据字符串的字符序列来计算哈希码。 public int hashCode() { int h = hash; if (h == 0 && value.length > 0) { char val[] = value; for (int i = 0; i ; i++) ...

    实用小工具:Java实体类对比、Json对比、字符串动态拼接等功能

    标题中的“实用小工具:Java实体类对比、Json对比、字符串动态拼接等功能”涉及到的是在软件开发过程中常用的几个技术点,主要集中在Java后端和前端Vue.js的应用上。这里我们将详细探讨这些知识点: 1. **Java实体...

    Android-这是Kotlin的IntelliJ插件。您可以使用它从Json字符串创建数据类

    您可以使用它从Json字符串创建数据类"这一主题,以及与之相关的知识点。 首先,我们需要了解什么是IntelliJ IDEA。IntelliJ IDEA是一款由JetBrains公司开发的集成开发环境(IDE),广泛用于Java、Kotlin等语言的...

    字符串正则表达式PPT

    与`String`相比,`StringBuffer`的`append()`方法可以高效地添加字符或字符串。 `StringTokenizer`类用于分隔字符串,根据特定分隔符将字符串拆分为多个部分,常用于简单的文本解析。 现在我们转向正则表达式。...

    HashCode相同equals不同的2位字符集合算法

    例如,有两个只包含两个字符的字符串,它们的字符可能不同,但由于ASCII码的关系,它们的`hashCode()` 可能相同。ASCII码是一种7位二进制编码,用于表示128个不同的字符。例如,'A'和'a'的ASCII值相差32,但它们的...

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

    根据文件中的描述,可以通过模拟Java的hashCode计算过程,使用JavaScript的字符串charCodeAt方法来获取字符串每个字符的ASCII值,并且采用同样的计算方式来生成哈希码。 3. **JavaScript整数溢出问题**:文件中提到...

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

    一、字符串的创建与初始化 在Java中,字符串是对象,可以通过以下方式创建: 1. 使用`new`关键字:`String str = new String("Hello");` 2. 直接赋值:`String str = "Hello";` 这种方式的字符串常量池中只有一份...

    java 中HashCode重复的可能性

    这个示例代码使用了递归算法来生成所有可能的字符串,然后测试这些字符串的 Hash Code 是否重复。结果表明,在 A-z 范围内,仅仅 3 位长度的字符串就有 138510 次重复。 那么,如何避免 Hash Code 重复的问题?有...

    string-hashcode:java.lang.String.hashCode

    字符串哈希码 字符串的其他实用程序。安装npm install string-...原料药hashCode(str)参数: str:字符串对象返回: 编号:哈希码返回字符串的哈希码。 请注意,哈希码对于特定字符串是不可变的。执照麻省理工学院

    JAVA字符串类型switch的底层原理详析

    在JVM中,字符串类型的switch语句的处理可以分为三步:第一步,将字符串类型转换为hashCode;第二步,使用hashCode进行比较;第三步,如果hashCode相同,则使用equals方法对比字符串的值。 在JVM中,hashCode的计算...

    Java语言与面向对象程序设计第06讲(字符串)

    在"Java语言与面向对象程序设计第06讲(字符串)"中,主要涵盖了以下几个知识点: 1. **语言基础类库**: - **Object类**:所有Java类的基类,提供了如equals()、hashCode()和toString()等通用方法。 - **数据类型...

    string常量池和intern_韩雅茹Java系列2021.pdf

    Java可以根据字符串的hashCode找到对应的entry,如果没有冲突,它可能只是一个entry,如果有冲突,它可能是一个entry链表,然后Java再遍历entry链表,匹配引用对应的字符串,如果找得到字符串,返回引用,如果找不到...

    equals,hashcode,toString

    `hashCode()` 方法则与`equals()`密切相关。在哈希表(如HashMap、HashSet)中,对象的哈希码用于快速定位对象存储的位置。当两个对象通过`equals()`方法判断为相等时,它们的`hashCode()`方法返回值也应该相等。...

    Java中equals,hashcode和==的区别

    如果我们定义两个字符串 s1 和 s2,並将它们赋值为 "abc",然后使用 equals 方法比较它们,结果当然是 true。 最后,hashcode 方法是一个对象的散列码,它是用来唯一标识一个对象的。hashcode 方法可以将一个对象...

    JAVA中字符-字符串常用的方法.doc

    ### JAVA中字符-字符串常用的方法 #### 一、概述 在Java编程语言中,字符和字符串的操作是非常基础且重要的部分。本文将详细介绍Java中字符(`char`)和字符串(`String`)的一些常用方法,这些方法对于进行文本...

Global site tag (gtag.js) - Google Analytics