1.java计算公式

@Override
public int hashCode() {
//设置初始值
int result = ; //假设有效域为: name,age,idCardNo,incomeAnnual,sex,brithDay
int c = ;
//计算name (String为对象类型,他的计算直接调用本身的hashCode)
c = name.hashCode();
result = result * + c; //计算age (int/byte/char/short类型,他的计算直接调用本身的值)
c = this.getAge();
result = result * + c; //计算idCardNo (long类型,他的计算 (int)(field^(field >>> 32)) 无符号右移32位)
c = (int) (this.idCardNo ^ (this.idCardNo >>> ));
result = result * + c; //计算 incomeAnnual (double类型,他的计算 Double.doubleToLongBits(field)后,再按Long类型计算 )
//(float类型,他的计算 Float.floatToIntBits(field) )
long tmp = Double.doubleToLongBits(this.incomeAnnual);
c = (int) (tmp ^ (tmp >>> ));
result = result * + c; //计算 sex (sex为boolean类型,他的计算直接调用 c=sex?1:0)
c = this.isSex() ? : ;
result = result * + c; //计算 brithDay (brithDay为Date对象类型,他的计算直接调用 本身的hashCode)
c = this.getBirthDay().hashCode();
result = result * + c; return result;
}

2. .net计算公式

public class HashCodeTest
{
public static void Excute()
{
var man = new Man()
{
Age = ,
BirthDay = new DateTime(,,),
IdCardNo = ,
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 = ; //假设有效域为: name,age,idCardNo,incomeAnnual,sex,brithDay
int c = ;
//计算name (String为对象类型,他的计算直接调用本身的hashCode)
c = Name.GetHashCode();
result = result * + c; //计算age (int/byte/char/short类型,他的计算直接调用本身的值)
c = this.Age;
result = result * + c; //计算idCardNo (long类型,他的计算 (int)(field^(field >> 32)) 有符号右移32位,符号位不移动)
c = (int)(this.IdCardNo ^ (this.IdCardNo >> ));
result = result * + 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 >> ));
result = result * + c; //计算 sex (sex为boolean类型,他的计算直接调用 c=sex?1:0)
c = this.Sex ? : ;
result = result * + c; //计算 brithDay (brithDay为Date对象类型,他的计算直接调用 本身的hashCode)
c = this.BirthDay.GetHashCode();
result = result * + c; return result;
}
}

计算hashCode通用计算公式的更多相关文章

  1. 计算hashCode的常见方法

    把某个非零常数值,比如说17,保存在一个叫result的int类型的变量中. 2.对于对象中每一个关键域f(值equals方法中考虑的每一个域),完成以下步骤: a.为该域计算int类型的散列吗c: ...

  2. 关于hashMap中 计算hashCode的逻辑推理(二)

    hashMap中,为了使元素在数组中尽量均匀的分布,所以使用取模的算法来决定元素的位置.如下: //方法一: static final int hash(Object key){//jdk1.8 in ...

  3. js计算hashcode

    String.prototype.hashCode = function(){ var hash = 0; for (var i = 0; i < this.length; i++) { var ...

  4. C#中另类自定义公式计算 字符串转换为计算公式,并得出计算结果

    [csharp] view plain copy print? //方法一 利用DataTable中的Compute方法 例如:1*2-(4/1)+2*4=6 , , , ); DataTable d ...

  5. Android 时间计算工具 通用类TimeUtil

    1.整体分析 1.1.源代码如下,可以直接Copy. public class TimeUtil { private static final String TAG = "TimeUtil& ...

  6. Java入门系列之hashCode和equals(十二)

    前言 前面两节内容我们详细讲解了Hashtable算法和源码分析,针对散列函数始终逃脱不掉hashCode的计算,本节我们将详细分析hashCode和equals,同时您将会看到本节内容是从<E ...

  7. Effective java笔记(二),所有对象的通用方法

    Object类的所有非final方法(equals.hashCode.toString.clone.finalize)都要遵守通用约定(general contract),否则其它依赖于这些约定的类( ...

  8. c语言详解  蔡勒(Zeller)公式计算某一天是星期几  极其方便

    —— 蔡勒(Zeller)公式 ,小于等于14,即在蔡勒公式中,某年的1.2月要看作上一年的13.14月来计算,比如2003年1月1日要看作2002年的13月1日来计算):d:日:[ ]代表取整,即只 ...

  9. hashCode花式卖萌

    声明:这篇博文纯属是最近看源码时闲着没事瞎折腾(好奇心驱动),对实际的应用程序编码我觉得可能没有那么大的帮助,各位亲就当是代码写累了放松放松心情,视为偏门小故事看一看就可以了,别深究. 一.从Obje ...

随机推荐

  1. 19、SOAP安装,运用与比对结果解释

    转载:http://www.dengfeilong.com/post/Soap2.html https://blog.csdn.net/zhu_si_tao/article/details/71108 ...

  2. p2148 [SDOI2009]E&D

    传送门 分析 https://www.luogu.org/blog/flashblog/solution-p2148 代码 #include<bits/stdc++.h> using na ...

  3. 7.python实现高效端口扫描器之nmap模块

    对于端口扫描,使用的最多的就是nmap这个工具,不想python已经强大到,提供了nmap这个扫描端口的模块. 本片文章主要介绍nmap模块的两个常用类: PortScanner()类,实现一个nma ...

  4. QT开发环境

    代码实现界面和槽 代码实现界面和槽 在上述工程的dialog.h中添加如下加黑代码: 加入头文件: #include <QLabel> #include <QLineEdit> ...

  5. Training Very Deep Networks

    Rupesh Kumar SrivastavaKlaus Greff ̈J urgenSchmidhuberThe Swiss AI Lab IDSIA / USI / SUPSI{rupesh, k ...

  6. TypedValue.applyDimension的使用

    TypedValue.applyDimension是一个将各种单位的值转换为像素的方法 用法TypedValue.applyDimension(int unit, float value,Displa ...

  7. C# return、continue、break

    return 终止当前进程 可用循环判断,验证,等功能 if (ew == v) { PublicControlLib.Class.PublicProperties.ShowSuccess(); re ...

  8. DOM--sql server

    public List<LianHeData> select(int ID) { List<LianHeData> list = new List<LianHeData& ...

  9. thedao

    TheDao 简化版解释 the Dao 合约 contract f1{ function transfer() { if (acccount[m]>=100) { m.send(100) ac ...

  10. servlet-mysql实现简单用户登录注册

    环境:IDEA Maven 效果截图: 项目结构: 类说明: ConnectionUtil:负责数据库连接和释放 UserDao:数据库增删改查操作 User:用户Bean,只用注册和登录的话可以不要 ...