1. 程式人生 > >計算hashCode通用計算公式

計算hashCode通用計算公式

初始 ash mea ole get 類型 shc 公式 etag

1

@Override
    public int hashCode() {
        //設置初始值
        int result = 17;

        //假設有效域為: name,age,idCardNo,incomeAnnual,sex,brithDay
        int 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; }

計算hashCode通用計算公式