[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 11752] Re: 本日の議事録



  高橋(智)です。

  下の hashCode()は java.lang.Stringクラスの実装です。

"TAKAHASHI, Tomohiro" wrote:
snip 
>   JDK1.0.2の頃はどうだったか忘れましたが、JDK1.1.8では以下のように
> 最初の16byteだけというわけでは無さそうです。16byte以上でも衝突する
> 可能性は"幾分か"高いと思われます。
> 
> [JDK1.1.8]
> -----------------------------------------------------
> public int hashCode() {
>   int h = 0;
>   int off = offset;
>   char val[] = value;
>   int len = count;
> 
>   if (len < 16) {
>     for (int i = len ; i > 0; i--) {
>       h = (h * 37) + val[off++];
>     }
>   }
>   else {
>     // only sample some characters
>     int skip = len / 8;
>     for (int i = len ; i > 0; i -= skip, off += skip) {
>       h = (h * 39) + val[off];
>     }
>   }
>   return h;
> }
> -----------------------------------------------------
snip 

-- 
高橋智宏
  Java読書会( http://www.javareading.com/bof/ )