Javaの基礎:のhashCodeとequals

重複HashSetのかどうかを確認する方法

hashCode二つのオブジェクト()、同じ(等しい)は確かに右、本当ですか?

関係のhashCodeとequalsメソッドを

「あなたはなぜ、書き換えのequals hashCodeメソッドをオーバーライドする必要があり、それをあなたにオーバーライドされたハッシュコードをと等しい?」:インタビュアーはあなたを求めることができます

hashCode()の紹介

アクションのhashCode()は、ハッシュコードと呼ばれ、ハッシュコードを取得することであり、それは実際にint型の整数を返します。このハッシュ・コードの役割は、ハッシュインデックステーブル内のオブジェクトの位置を決定することです。ハッシュコードは、()は、この手段は、任意のJavaクラスは、ハッシュコード()関数が含まれていることを、JDK Object.javaに定義されています。

ハッシュテーブルは、ことを特徴とするキーと値のペア(キー値)に格納されている:「値」に迅速に取得に対応する「キー」に従って。ハッシュコードの使用に関するこの1!(あなたはすぐにオブジェクトが必要見つけることができます)

なぜはずのhashCode

私たちはハッシュコードを必要とする理由を説明するための一例として、私たちの「重複をチェックするための方法をHashSetの」:

あなたが参加すると、HashSetの、HashSetのは、最初のオブジェクト追加の位置を決定するために、オブジェクトのハッシュコード値を計算しますオブジェクトも、他のハッシュコード値と比較されるハッシュコードの一致がない場合は、HashSetのは、オブジェクトが繰り返されないことを前提として、オブジェクトに追加されました表示されます。オブジェクトが同じハッシュコード値が見つかった場合でも、我々は、同じオブジェクト本当に等しいハッシュコードかどうかを確認するためのequals()メソッドを呼び出します。それらが同じである場合は、HashSetのは、操作が成功した参加を許可されることはありません。異なる場合は、それは別の場所にハッシュを再でしょう。(抜粋私の本からJavaには「ヘッド最初のjava」第二版を悟り)。だから我々は非常に対等の数を減らし、それに応じて大幅に実行速度が向上します。

hashCode()およびequals()関連規定

2つのオブジェクトが等しい場合、それはまた、同じハッシュコードである必要があります

等しい二つのオブジェクト、2つのオブジェクトが真のequalsメソッドの戻りを呼び出すようにしました

ハッシュコード2つのオブジェクトが同じ値を持って、彼らは必ずしも同じではありません

したがって、それはメソッドをオーバーライドされた等しく、この方法は、ハッシュコードをカバーしなければなりません

デフォルトの動作のhashCode()は、ヒープ上のオブジェクトに固有の値を作成することです。、その後、2つのオブジェクトが(これら2つのオブジェクトが同一のデータを指していても)とにかく同じクラスないオーバーライドのhashCode()場合はありません

その基準点に等しいオブジェクトに等しく、両方の違いは何ですか?
対象コンテンツの比に等しいが平等と等しい比較のためにメモリに記憶されているが、それらが指すメモリアドレス参照さ等しいです。

値が渡された
オブジェクトがメソッドへのパラメータとして渡される場合、このメソッドは、このオブジェクトのプロパティを変更でき、変更の結果を返し、そう最後に値または参照によって渡され、本明細書に送信が

値によって渡されます。Java言語のメソッド呼び出しの値はのみサポートパラメータを渡されます。方法は、パラメータとしてオブジェクトインスタンスに渡されると、パラメータの値は、オブジェクトへの参照です。オブジェクトのプロパティは、呼び出されたプロシージャで変更することができますが、変更は、発信者へのオブジェクト参照には影響しません

なぜJavaの値のみが渡される
プログラミング言語の専門用語のメソッド(または関数)の一部にパラメータを渡すについての最初のレビューを。値による呼び出し(値による呼び出し)を受信表現は、呼び出し元によって提供された値、および参照によってコール(参照による呼び出し)発呼者によって提供表現受信可変アドレスです。転写法は、参照変数値に対応する修正されてもよいし、変数の値は、コール転送の値に対応する修正することができません。メソッドを渡すパラメータのプログラミング言語(だけでなく、Javaの)さまざまなを記述するために使用されます。

Javaプログラミング言語は、常に値でコールを使用しています。つまり、この方法は、すべてのパラメータ値のコピーを得ている、あること、方法はそれのいずれかのパラメータ変数に渡される変更されません。

公開された438元の記事 ウォンの賞賛2 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_37769323/article/details/104603418