计算hashCode通用计算公式
1.java计算公式
@Overridepublic int hashCode() {//设置初始值int result = 17;//假设有效域为: name,age,idCardNo,incomeAnnual,sex,brithDayint c = 0;//计算name (String为对象类型,他的计算直接调用本身的hashCode)c = name.hashCode();result = result * 37 + c;//计算age (int/byte/char/short类型,他的计算直接调用本身的值)c = this.getAge();result = result * 37 + c;//计算idCardNo (long类型,他的计算 (int)(field^(field >>> 32)) 无符号右移32位)c = (int) (this.idCardNo ^ (this.idCardNo >>> 32));result = result * 37 + c;//计算 incomeAnnual (double类型,他的计算 Double.doubleToLongBits(field)后,再按Long类型计算 )//(float类型,他的计算 Float.floatToIntBits(field) )long tmp = Double.doubleToLongBits(this.incomeAnnual);c = (int) (tmp ^ (tmp >>> 32));result = result * 37 + c;//计算 sex (sex为boolean类型,他的计算直接调用 c=sex?1:0)c = this.isSex() ? 1 : 0;result = result * 37 + c;//计算 brithDay (brithDay为Date对象类型,他的计算直接调用 本身的hashCode)c = this.getBirthDay().hashCode();result = result * 37 + c;return result;}
2. .net计算公式
public class HashCodeTest{public static void Excute(){var man = new Man(){Age = 10,BirthDay = new DateTime(1950,1,1),IdCardNo = 2139095040,IncomeAnnual = 10000000.5,Name = "Aven",Sex = true};var hasCode = man.GetHashCode();Console.WriteLine(hasCode);}}class Man{public long IdCardNo { get; set; }public int Age { get; set; }public string Name { get; set; }public double IncomeAnnual { get; set; }public bool Sex { get; set; }public DateTime BirthDay { get; set; }public override int GetHashCode(){//设置初始值int result = 17;//假设有效域为: name,age,idCardNo,incomeAnnual,sex,brithDayint c = 0;//计算name (String为对象类型,他的计算直接调用本身的hashCode)c = Name.GetHashCode();result = result * 37 + c;//计算age (int/byte/char/short类型,他的计算直接调用本身的值)c = this.Age;result = result * 37 + c;//计算idCardNo (long类型,他的计算 (int)(field^(field >> 32)) 有符号右移32位,符号位不移动)c = (int)(this.IdCardNo ^ (this.IdCardNo >> 32));result = result * 37 + c;//计算 incomeAnnual (double类型,他的计算 BitConverter.DoubleToInt64Bits(field)后,再按Long类型计算 )//(float类型,他的计算 BitConverter.ToInt32(BitConverter.GetBytes(this.IncomeAnnual),0) )long tmp = BitConverter.DoubleToInt64Bits(this.IncomeAnnual);c = (int)(tmp ^ (tmp >> 32));result = result * 37 + c;//计算 sex (sex为boolean类型,他的计算直接调用 c=sex?1:0)c = this.Sex ? 1 : 0;result = result * 37 + c;//计算 brithDay (brithDay为Date对象类型,他的计算直接调用 本身的hashCode)c = this.BirthDay.GetHashCode();result = result * 37 + c;return result;}}
转载于:https://www.cnblogs.com/zhshlimi/p/8471752.html
计算hashCode通用计算公式相关推荐
- hashmap计算hashcode时为什么要把高位右移16位
写在前面: 1.如有错误请看官斧正. 2.建议把例子复制出去,自己用各种位运算算一下,然后也像我这样把异同处标出来,这样能在自己计算的过程中有更深的领悟. 一.hashmap计算hashcode时为什 ...
- 【计算理论】可判定性 ( 计算模型与语言 | 区分 可计算语言 与 可判定语言 | 证明 通用图灵机语言是 可计算语言 | 通用任务图灵机 与 特殊任务图灵机 )
文章目录 一.计算模型与语言 二.区分 可计算语言 与 可判定语言 三.证明 ATM\rm A_{TM}ATM 语言 可计算 四.通用 ( Universal ) 任务图灵机 与 特殊任务图灵机 一 ...
- 阿里云服务器共享型、计算型和通用型有什么区别?
阿里云服务器的CPU种类有很多,当阿里云搞活动的时候,往往会有共享型.计算型.通用型这几款,那么他们之间有什么区别呢? 共享型: 共享型目前常见的型号是共享标准型s6和共享计算型n4. 共享型产品采用 ...
- 怎么计算机会成本,机会成本计算公式,实例解读机会成本
机会成本计算公式,实例解读机会成本 罗国秀 2019-10-30 10:55:45 希财网 在理财投资活动中,投资者经常要做决策,而每一个决策都必定会舍弃一些东西,也就是人们常说的机会成本.那么 ...
- 计算机vb计算函数值,VB计算公式及值.doc
VB计算公式及值 VB表达式和顺序结构程序 学习目标: 学会把一般数学.物理的计算公式转换为VB表达式,初步学会构建VB表达式. 了解常用数据类型,理解常量.变量.函数和表达式的概念. 掌握赋值语句的 ...
- 卷积神经网络卷积计算,卷积网络计算公式
卷积运算的过程是什么?卷积计算的矩阵是怎么来的,如下图,这个卷积运算示意图怎么理解? 首先,卷积核相同,输入相同,输出的特征是一样的.只不过将输出的矩阵形式换成了列向量的形式. 实质上一般卷积运算与矩 ...
- 神经网络参数量和计算量,神经网络计算公式
1.BP人工神经网络 人工神经网络(artificialneuralnetwork,ANN)指由大量与自然神经系统相类似的神经元联结而成的网络,是用工程技术手段模拟生物网络结构特征和功能特征的一类人工 ...
- Java计算排名通用方法
//该方法可用于分数排名,购买量排名等排名计算操作//传入需要处理的集合和数字public int getClassRank(List<BuyerCountRanking> list,do ...
- 平流式沉淀池流量计算_平流沉淀池计算公式(高版本格式)
说明:在计算的过程中需要输入的数据采用蓝色字体表示. 1.设计进水水质参数 设计流量(Q) 52800 m3/d 设计水温(T) 25 COD(C 0 ) 500 mg/L SS(S 0 ) 400 ...
最新文章
- 开源云计算平台 abiCloud
- XCTF-Web-高手区-supersqli
- 在Linux上启动oracle 11g OEM
- 手也很光滑的飞鸽传书
- 8位并行左移串行转换电路_74ls194串行数据到并行数据的转换
- nginx 使用自定义 log_format 以及输出自定义http头
- 《高斯牛顿优化算法--第一讲》原理推导
- vs2013 Matlab 2018 (64)混合编程
- 苹果妙控鼠标二代(Magic Mouse 2 )如何连接到 Window 10系统
- SSIS(简单数据抽取过程介绍)
- 利用YYLabel 进行图文混排+高度计算
- OWC资料收集-绑定到数据源 Office XP 图表组件
- 计算机上无线网络开关在哪里,笔记本无线网络开关在哪里
- java的nullpoint_java.lang.NullPointerException
- linux中的块缓冲
- 让群晖ds218play同树莓3B+派互通有无
- 大话卫星导航中的信号处理系列文章——全球卫星导航系统介绍
- easyExcell
- 【中标麒麟】中标麒麟安装中文输入法
- android 复制屏幕,iphone或者android的手机或者pad可以屏幕复制到Z1上了!