博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String 中的hashCode方法
阅读量:6938 次
发布时间:2019-06-27

本文共 424 字,大约阅读时间需要 1 分钟。

hot3.png

public int hashCode() {     int h = hash;   int len = count;   if (h == 0 && len > 0) {   int off = offset;   char val[] = value;   for (int i = 0; i < len; i++) {      h = 31*h + val[off++]; ///看这里   }   hash = h;   }   return h; }

1、上文使用31的原因:

(1)31是一个素数(只能被自身和1整除,减少冲突);

(2)h*31可以被虚拟机优化为(h<<5),提高算法效率;

  • 注意:乘以32  才是位移运算

091203_IsHW_3847203.png

(3)数值尽量大,hash地址就越大,减少冲突;

(4)31只占用5bits(11111),相乘溢出概率小;

转载于:https://my.oschina.net/u/3847203/blog/1816156

你可能感兴趣的文章
Js窗口嵌套
查看>>
ubuntu16.04 ROS安转及RVIZ启动
查看>>
[转]servlet中的service, doGet, doPost方法的区别和联系
查看>>
2017-01-05
查看>>
FS系统开发设计(思维导图)
查看>>
org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.demo.pojo.IdCard
查看>>
数据库中文乱码问题
查看>>
(转载)DWZ用svn进行版本控制与团队开发
查看>>
Java的值传递和引用传递
查看>>
客户端组建调用
查看>>
波屯毒鸡汤1
查看>>
面向对象课程第三次总结性博客作业
查看>>
python多线程编程-queue模块和生产者-消费者问题
查看>>
tomcat9启动后控制台输出乱码问题
查看>>
Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix
查看>>
测试中认识 sqlite
查看>>
[学习笔记]猫树
查看>>
iphone-common-codes-ccteam源代码 CCPoint.h
查看>>
转载:python文件打开方式详解——a、a+、r+、w+区别
查看>>
一道js试题
查看>>