Java オブジェクトのハッシュ コードは次の式で生成されます: h = (h
#Java ではオブジェクトのハッシュ コードはどのように生成されるのでしょうか?
ハッシュ コードは Java オブジェクト内に格納される int 値で、オブジェクトをすばやく識別して検索するために使用されます。これは次の式で生成されます:
hashCode = (h << 5) - h + x
ここで:
int i = 10; System.out.println(i.hashCode()); // 输出:10参照型の場合、ハッシュ コードはそのオブジェクトのハッシュ コード リストに基づいて生成されます。
hashCode = (hashcode1 * 31) + (hashcode2 * 31) + ... + (hashcodeN * 31)ここで、31 は素数です。これは「マジックナンバー」と呼ばれ、ハッシュの衝突を減らすのに役立ちます。
実践的なケース
次のPerson クラスについて考えてみましょう:
class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } @Override public int hashCode() { int hash = 0; if (name != null) { hash += name.hashCode() * 31; } hash += age * 31; return hash; } }このクラスは
hashCode()## をカバーします#name
および age
属性ハッシュ コードに基づいて計算されたカスタム ハッシュ コードを生成するメソッド。 <pre class='brush:java;toolbar:false;'>Person p1 = new Person("John", 25);
Person p2 = new Person("John", 25);
System.out.println(p1.hashCode() == p2.hashCode()); // 输出:true</pre>
上記の場合、
と p2
は異なるオブジェクトですが、同じプロパティを持つため、ハッシュ コードは同じです。
以上がJava ではオブジェクトのハッシュ コードはどのように生成されるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。