hashcode与字符串
问题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相同,字符串相同吗?答案是不一定。
答案: 不可能。如果你自己重写equals和hashcode方法是可以实现的,但是java规范要求两个equals的对象一定要有相同的hashcode。
String类是jdk里的基础类,是严格遵守规范的,而且是final的,不能继承,所以也没有重写覆盖hashcode方法的可能。
答案: 一定相同。
hashcode是由简单的Hash算法得出来的,根据字符串的值算出来的,每次算出来的结果都相同
hashcode与字符串的更多相关文章
- Java equals()方法和hashCode()方法
equals()方法 如果满足了以下任何一个条件,就不需要覆盖equals()方法: 1 类的每个实例本质上都是唯一的. 2 不关心类是否提供了“逻辑相等”的测试功能. 3 父类已经覆盖了equals ...
- 聊一聊Java字符串的不可变
前言 在 Java 开发中 String (字符串)对象是我们使用最频繁的对象,也是很重要的对象.正是使用得如此频繁,String 在实现层面上不断进行优化,从 Java6 到 Java7,再到 Ja ...
- Java中的HashTable详解
Hashtables提供了一个很有用的方法可以使应用程序的性能达到最佳. Hashtables(哈 希表)在计算机领域中已不 是一个新概念了.它们是用来加快计算机的处理速度的,用当今的标准来处理,速度 ...
- Java中的HashMap 浅析
在Java的集合框架中,HashSet,HashMap是用的比较多的一种,顺序结构的ArrayList.LinkedList这种也比较多,而像那几个线程同步的容器就用的比较少,像Vector和Hash ...
- java hashtable
java hashtable Hashtables提供了一个很有用的方法可以使应用程序的性能达到最佳. Hashtables(哈希表)在计算机领域中已不 是一个新概念了.它们是用来加快计算机的处理速度 ...
- 温故而知新 Volley源码解读与思考
相比新的网络请求框架Volley真的很落后,一无是处吗,要知道Volley是由google官方推出的,虽然推出的时间很久了,但是其中依然有值得学习的地方. 从命名我们就能看出一些端倪,volley中 ...
- Java基础学习笔记十六 集合框架(二)
List List接口的特点: 它是一个元素存取有序的集合.例如,存元素的顺序是11.22.33.那么集合中,元素的存储就是按照11.22.33的顺序完成的. 它是一个带有索引的集合,通过索引就可以精 ...
- JAVA-String,StringBuilder,StringBuffer例子(基础必备)
package com.net.xinfang.reflect; import java.io.UnsupportedEncodingException; /** * String不属于8种基本数据类 ...
- Java Calendar,Date,DateFormat,TimeZone,Locale等时间相关内容的认知和使用(3) Date
本章主要介绍Date类,并通过示例学习如何使用它.最后,讲解一下UTC.GMT和时区的关系. Date 介绍 Date 定义 public class Date implements java.io. ...
随机推荐
- 去他的效应(what-the-hell effect)与自我放纵
去他的 效应(what-the-hell effect)与自我放纵 为什么写这篇文章: 对于我来说,但我感到疲惫——"无意拿起"手机,对自己说"随便看看"——但 ...
- Brief introduce to Iometer
<本人原创,纯粹为了练习英文博客的写作.转载请注明出处谢谢!非技术博客 http://shiyanch.lofter.com/ > *:first-child { margin-top: ...
- Eclipse系列: Eclipse设置Tomcat启动超时时间
在eclipse的workspace目录下,找到如下文件: .metadata\.plugins\org.eclipse.wst.server.core\servers.xml 如下图所示,然后将它修 ...
- [CareerCup] 12.2 Find the Reason of Crash 找到程序崩溃的原因
12.2 You are given the source to an application which crashes when it is run. After running it ten t ...
- LeetCode:Word Break(DP)
题目地址:http://oj.leetcode.com/problems/word-break/ 简单的动态规划问题,采用自顶向下的备忘录方法,代码如下: class Solution { publi ...
- Linux及安全——模块
Linux及安全——模块 一.模块的编译.生成.测试.删除 1.编写模块代码 编写:gedit test.c 查看:cat test.c 2.查看版本信息 3.编写Makefile obj-m :这个 ...
- 用 CNTK 搞深度学习 (一) 入门
Computational Network Toolkit (CNTK) 是微软出品的开源深度学习工具包.本文介绍CNTK的基本内容,如何写CNTK的网络定义语言,以及跑通一个简单的例子. 根据微软开 ...
- Cocopod上更新上传自己的开源框架供别人下载
为了更方便的集成第三方框架有了cocopods 的, 当我们有了相对比较好的框架的时候如何更新到cocopods 供他人参考呢? 下面我一步一步带大家开源自己的框架. 第一步 把自己的框架更新到git ...
- .NET MVC框架中控制器接收参数的四种方式
1.通过路由中的配置的参数名字直接接收(要求:两者同名) routes.MapRoute( name: "Default", ...
- Django实际站点项目开发经验谈
开发了两个月的Django站点正式上线了,看着网站从无到有,从前端到后台,从本地开发到环境部署,一点一滴的堆砌成型,着实带给我不小的乐趣. Django站点介绍: 开发环境:阿里云服务器centos6 ...