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. 9-python 的ProxyHandler处理器(代理设置)

    ProxyHandler处理器(代理设置) 使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的. 很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正 ...

  2. 面试题:HashMap和ConcurrentHashMap的区别,HashMap的底层源码。

    Hashmap本质是数组加链表.根据key取得hash值,然后计算出数组下标,如果多个key对应到同一个下标,就用链表串起来,新插入的在前面. ConcurrentHashMap:在hashMap的基 ...

  3. ubuntu 64 14.04 共享文件夹问题

    转自http://blog.csdn.net/gongyuan073/article/details/46604233 原文链接: http://blog.csdn.NET/chinley/artic ...

  4. flex 布局的深入研究

    对于flex盒模型的设计期望 flex盒模型是被期望设计成 1:在任何流动的方向上(包括上下左右)都能进行良好的布局 2:可以以逆序 或者 以任意顺序排列布局 3:可以线性的沿着主轴一字排开 或者 沿 ...

  5. 【原创】linux signal处理中的几个问题(suse下莫名其妙死锁的处理)

    我在CSDN专栏写过的,老帖子最近发现在腾讯的CVM上,服务器总是平凡的死锁后查明真像为 当你发生sig 11的异常时,会进入处理函数 signalHandler同时此时生成相应的dump file时 ...

  6. clojure-emacs-autocomplete

    1. https://github.com/clojure-emacs/cider#keyboard-shortcuts 2. install emacs 24.5 3. http://clojure ...

  7. (转)初试konckout+webapi简单实现增删改查

    原文地址:http://www.cnblogs.com/flykai/p/3361064.html 前言 konckout.js本人也是刚刚接触,也是初学,本文的目的是使用ko和asp.net mvc ...

  8. NAO机器人

    NAO机器人是Aldebaran Robotics公司研制的一款人工智能机器人.它拥有着讨人喜欢的外形,并具备有一定程度的人工智能和约一定程度的情感智商并能够和人亲切的互动. 教学研究类/NAO机器人 ...

  9. 【Android学习】自定义checkbox

    1.1 自定义checkbox 选中图片 自定义checkbox使用的时android:background而不是android:button,原因在于使用button时自定义图片过大超出边缘部分会截 ...

  10. duilib入门简明教程 -- 前言(1)

        关于duilib的介绍就不多讲了,一来不熟,二来小伙伴们想必已经对比了多个界面库,也无需赘述.下面进入正题:     不看广告看疗效! 已有众多知名公司采用duilib做为界面库,如华为网盘. ...