[ハッシュ、ハッシュ、SHA-1 - 練習] [記事] [ハッシュコードのソース - 翻訳]理解する時間割いて非常に包括的な知識のポイント[のhashCode:強力なIDは、等しい:弱い等しいですか?]

1、ハッシュコード(方法源)

int型java.lang.Object.hashCode()

オブジェクトのハッシュコード値を返します。この方法は、java.util.HashMapをによって提供されるようなハッシュテーブルの利益のために支持されています。

//オブジェクトのハッシュ値を返します。ハッシュテーブルは、ハッシュマップでは、例えば、容易にこの方法を説明することができます。

ハッシュコードの一般的な契約は次のとおりです。
オブジェクトが変更された上で•それはJavaアプリケーションの実行中に複数回同じオブジェクトで呼び出されるたびに、一貫して同じ整数を返さなければなりませんhashCodeメソッドは、等号の比較に使われた情報を提供しません。この整数は同じアプリケーションの別の実行へのアプリケーションの1つの実行の一貫性を維持する必要はありません。

Javaプログラムの実行中に、オブジェクト・メソッド呼び出しハッシュコードが繰り返しメソッドに等しいの情報が変更されていないと仮定すると、同じ整数値に戻らなければなりません。しかし、同じアプリケーションの実装の異なる部分に、整数値が等しいままである必要はありません。
•2つのオブジェクトがに応じて等しい場合等しい(Object)メソッドは、同じ整数の結果を生成しなければならない二つの物体の各々にhashCodeメソッドを呼び出します。

キー:で2つのオブジェクトを想定同等の方法の等号(反射性、対称性、透過性、耐久性)、その後、呼び出しのhashCode戻り値は等しくなければなりません

•2つのオブジェクトがjava.lang.Object.equals(java.lang.Objectの)方法に従って等しくない場合、2つのオブジェクトのそれぞれにhashCodeメソッドを呼び出すと異なる整数の結果を生成しなければならないことが要求されません。しかし、プログラマは、等しくないオブジェクトについては異なる整数値が生成するハッシュテーブルの性能を向上させることができることに注意すべきです。

しかし、2つのオブジェクトが戻り等号で等しくない、呼び出しを返さなければならないのhashCodeは必ずしも値の異なるビューを必要とされていません等しくないオブジェクトが異なるのhashCodeは、ハッシュテーブルの効率を向上させることができます返すためではなく、プログラマは注意する必要があります。

合理的に実用的である限り、クラスオブジェクトによって定義されたhashCodeメソッドは、異なるオブジェクトの異なる整数値を返しません。(これは、典型的には、整数にオブジェクトの内部アドレスを変換することによって実現されるが、この実装技術は、Java™プログラミング言語で必要とされません。)

合理的なプラクティスとして、異なる方法のハッシュコードオブジェクトは異なるハッシュ値を返すことができます。(典型的には、オブジェクトによってハッシュコードオブジェクトは、内部アドレス[第一の実行環境、一意の内部アドレス???]から変換されるが、この実装技術は必須JPLありません)

2、HashMapの[良いの記事、非常に包括的な知識のポイント!ハッシュコードとハッシュアルゴリズムの] -depth理解

概要

  • バイナリ・コンピューティングの基本的な知識
  • なぜハッシュコード
  • String型のhashCodeメソッド
  • なぜほとんどのhashCodeメソッドは31を使用しています
  • HashMapのハッシュアルゴリズムの原理(右16なぜ、なぜ使用^ビット単位のXOR)
  • なぜ&HashMapのモジュラ算術演算の代わりに?
  • なぜ、提案のHashMapの容量が2のべき乗でありますか?
  • 当社のカスタムHashMapのは、最高どのくらいの容量ですか?

3、メルケルメルケルや木の根

なぜ「メルケルツリーは、」ビットコインは、基礎となるトランザクションシステムをサポートすることができますです

各ノード上のコンテンツはハッシュ値であるので、また「と呼ばれるハッシュツリー。」

公開された354元の記事 ウォンの賞賛2 ビュー2124

おすすめ

転載: blog.csdn.net/m0_37681589/article/details/100514120