`
darrenzhu
  • 浏览: 782572 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

为什么计算HashCode时通常选择31这个数?

阅读更多
摘自http://www.importnew.com/22083.html 第16个问题
为什么通常选择31这个数?
选择31是因为可以用移位和减法运算来代替乘法,从而得到更好的性能。说到这里你可能已经想到了:31 * num 等价于(num << 5) – num,左移5位相当于乘以2的5次方再减去自身就相当于乘以31,现在的VM都能自动完成这个优化。
分享到:
评论

相关推荐

    hashcode-template:使用自动优化功能在其中编写Google Hashcode解决方案的框架

    为什么这有用? 由于无法最佳解决问题,因此获得高分的常见方法是使用贪婪算法并将其部分随机化。 随机化的优点是该程序可以多次运行并保持最佳分数。 因此,一旦选择了随机参数,就成为优化问题。 该框架使用户...

    HashCode:Google#Hash Code 2017挑战赛

    这通常涉及放置缓存服务器,该服务器存储流行视频的副本。 当用户请求特定视频时,可以由靠近用户的缓存服务器来处理,而不是由数千公里外的远程数据中心来处理。 给定缓存服务器,网络端点和视频的描述以及对

    sesvc.exe 阿萨德

    codeceo 首页问答热门文章RSS订阅 文章首页 ...但是为什么呢?简单分析下。 看过上文的还记得在 HashMap 扩容的时候会调用 resize() 方法,就是这里的并发操作容易在一个桶上形成环形链表;这样当获取...

    equatable:Dart程序包,可帮助实现基于值的相等性,而无需显式覆盖==和hashCode

    能够在Dart比较对象通常涉及必须重写==运算符以及hashCode 。 它不仅冗长而乏味,而且不这样做会导致效率低下的代码,其行为不符合我们的预期。 默认情况下,如果两个对象是同一实例,则==返回true。 假设我们有...

    jdk 1.8 中文高清版

    例如,一个 Double 类型的对象包含了一个类型为 double 的字段,这表示如果引用某个值,则可以将该值存储在引用类型的变量中。这些类还提供了大量用于转换基值的方法,并支持一些标准方法,比如 equals 和 hashCode...

    java2022面试宝典

    在lawa中,每个对象都可以调用自己的hashCode)方法得到自己的哈希值(hashCode),相当于对象的指纹信息,通常来说世界上没有完全相同的两个指纹,但是在Java中做不到这么绝对,但是我们仍然可以利用hashCode来做一些...

    【05-面向对象(下)】

    •当使用接口来声明引用类型的变量时,这个引用类型的变量必须引用到其实现类的对象。 •一个类可以实现一个或多个接口,继承使用extends关键字,实现接口则使用implements关键字。 实现接口 •一个类...

    Hibernate中文API大全

    你必须作出一个选择,要么在组合元素中使用不能为空的属性,要么选择使用,,&lt;bag&gt; 或者 而不是 。 组合元素有个特别的用法是它可以包含一个元素。类似这样的映射允许你将一个many-to-many关联表映射为组合元素的...

    POJOGenerator v1.3.3 Install(可视化POJO代码生成器最终版)

    这是一个Properties属性文件,用于保存您最后选择的皮肤名称,以便下次打开此工具 时加载您所选择的皮肤来渲染工具UI界面。 5、所有最终代码生成效果都可以在左边的代码预览区域中查看,可点击滑动箭头显示出 被...

    java集合知识-map、set等

    一般情况下,如果自定义的类会产生很多对象,比如人,学生,书,通常都需要覆盖equals,hashCode方法。 建立对象判断是否相同的依据。 import java.util.HashSet; import java.util.Iterator; import java.util....

    hibernate复合主键映射

    复合主键映射 &lt;br&gt;通常将复合主键相关属性,单独抽取出来,建立一个独立的类 * 必须实现序列化接口 * 必须实现equals和hashcode方法 采用标签进行映射,其它属性采用正常映射

    Java toString的性能优化方案比较

    谁在关心toString的性能?没有人!除非当你有大量的数据在批量处理,使用...我们所钟爱的IDE们常常为我们生成equals/hashcode/toString这些方法,且我们通常不再去管它们。此外,这些IDE们提供了许多方式来生成我们自己

    Hibernate注释大全收藏

    @Entity 注解将一个类声明为实体 Bean, @Id 注解声明了该实体Bean的标识属性。 Hibernate 可以对类的属性或者方法进行注解。属性对应field类别,方法的 getXxx()对应property类别。 定义表 通过 @Table 为实体...

    fun-with-thoughtworks-hw:台湾家庭作业之一的解决方案。 要求未公布,以保持 TW 公平的招聘过程

    解决方案简单(可能不是最优的)算法,基于带有 First Fit Descending “trick”的工装Spock 不用于测试,因为 ... 实体中没有实现参数验证Equals/HashCode 和 Comparator 没有针对尴尬的空情况进行测试。 通常使用

    commons-testing

    通常,库版本取决于项目,但是测试代码倾向于具有一些常见的功能,而这些功能在其他流行的项目(例如 , 或中是不可用的。 但是,像和,此项目不会对项目引入任何依赖关系。 该项目实现了以下实用程序:。 equals()...

Global site tag (gtag.js) - Google Analytics