hashcode和hash算法的实现原理是什么

技术hashcode和hash算法的实现原理是什么本篇文章给大家分享的是有关hashcode和hash算法的实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一

本文是关于hashcode和hash算法的实现原理。边肖觉得很实用,所以想分享给大家学习。希望大家看完这篇文章能有所收获。我不多说。让我们和边肖一起看看。

哈希算法如何实现密钥的均匀分散?

在JDK,Object的hashcode方法是一个局部方法,也就是用C语言或者C实现,直接返回对象的内存地址。

我们没有重写hashCode方法,所以在HashMap中使用了对象的内存地址,所以它一定是不同的。

字符串类型如何覆盖hashCode方法?

/**

*字符串的char数组的个数每次乘以31,然后叠加,最后返回。因此,每个不同字符串返回的hashCode肯定是不同的。

*/

publishingtashcode(){ 0

inth=hash

if(h==0 value . length 0){ 0

char val[]=值;

for(inti=0;ivalue.lengthI){ 0

h=31 * h val[I];

}

hash=h;

}

returnh

}

那么为什么要用31呢?

冲突的风险很高。

31 * i==(i 5) – i

63溢出的风险更大。

15块怎么样?

00-1010,以便更好地统一哈希表的下标。

static finalinthash(Objectkey){ 0

inth

return(key==null)?0:(h=key.hashcode())^(h16);

}

也就是说,计算出的int类型32位(4字节),而不是低16位,将高16位移过去,以便尽可能均匀地分布它们。

也就是hashcode和hash算法的实现原理是什么。边肖认为,一些知识点可能会在我们的日常工作中看到或使用。我希望你能通过这篇文章学到更多的知识。更多详情请关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/37104.html

(0)

相关推荐

  • MySQL数据库的主从配置有哪些问题

    技术MySQL数据库的主从配置有哪些问题这篇文章主要介绍MySQL数据库的主从配置有哪些问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!  MySQL数据库是一种功能性不是很强大的关系型数据库管

    攻略 2021年12月8日
  • 如何解决java连接zookeeper很慢的问题

    技术如何解决java连接zookeeper很慢的问题这篇文章主要为大家展示了“如何解决java连接zookeeper很慢的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如

    攻略 2021年11月11日
  • MySQL中MERGE表的优缺点有哪些

    技术MySQL中MERGE表的优缺点有哪些这篇文章将为大家详细讲解有关MySQL中MERGE表的优缺点有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MERGE表的优点:1.简单管

    攻略 2021年11月1日
  • Spring2.5.6中面向切面编程及实现的示例分析

    技术Spring2.5.6中面向切面编程及实现的示例分析这期内容当中小编将会给大家带来有关Spring2.5.6中面向切面编程及实现的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收

    攻略 2021年10月27日
  • 蛋糕简笔画图片大全,自制蛋糕的做法大全谁有

    技术蛋糕简笔画图片大全,自制蛋糕的做法大全谁有家庭自制蛋糕 工具:电饭锅一个 材料:鸡蛋四个、面粉一饭勺、苏打粉(酵母粉)一小勺、生粉两小勺、色拉油、白砂糖、葡萄干若干 制作:先将鸡蛋打散在一个容器里,边搅拌边加入白砂糖

    生活 2021年10月28日
  • many比较级,many可以修饰比较级吗

    技术many比较级,many可以修饰比较级吗many可以修饰比较级。much可用于形容词、副词比较级之前many比较级,而many不能。如果many后修饰more,more代替或修饰可数名词复数时,前面只能用many,而

    生活 2021年10月24日