hashCodeメソッド
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/08 02:09 UTC 版)
「Javaの文法」の記事における「hashCodeメソッド」の解説
Object.hashCode()メソッドは連想配列にオブジェクトを保存するための「ハッシュ値」として (int型の) 整数を返す。java.util.Mapインタフェースを実装するクラスは連想配列を提供しhashCodeメソッドに依存する。hashCodeの良い実装は安定 (不変) かつ均等に分布するハッシュ値を返す (異なるオブジェクトのハッシュ値は互いに異なる値となる傾向を持ち、かつハッシュ値は整数値の範囲内で均等に分布する)。 連想配列はequalsとhashCodeの両メソッドに依存するため、これら二つのメソッドの間では、オブジェクトがMapに挿入される場合に関する或る重要な契約が維持されねばならない: 二つのオブジェクト a と b に関して a.equals(b) == b.equals(a)でなければならない。 もしa.equals(b)がtrueならば、a.hashCode() == b.hashCode()でなければならない。 この契約を維持するために、equalsメソッドをオーバーライドしたクラスは同時にhashCodeメソッドもオーバーライドし、逆もまた同様として、hashCodeとequalsが常に同じ性質(または同じ性質の一部)に基づくようにしなければならない。 マップがオブジェクトとの間に有する更なる契約は、ひとたびオブジェクトがマップに挿入されたなら、hashCode と equals両メソッドの結果は以後変わらないということである。したがって、一般にハッシュ関数はオブジェクトの不変(変更不能)な属性に基くように設計するのが良い。
※この「hashCodeメソッド」の解説は、「Javaの文法」の解説の一部です。
「hashCodeメソッド」を含む「Javaの文法」の記事については、「Javaの文法」の概要を参照ください。
- hashCodeメソッドのページへのリンク