[解決済み] hashCodeは何に使うのですか?ユニークですか?
質問
私は
getHashCode()
メソッドがあり、それは数字のシーケンスを返します。このハッシュコードを使って、アイテムを特定することはできますか?例えば、端末内の画像や楽曲を特定し、その所在を確認したい。特定のアイテムに付与されたハッシュコードがユニークであれば、このようなことが可能です。
hashCodeとは何ですか?
getHashCode()
は何に使うのでしょうか?
どのように解決するのですか?
MSDNによると :
<ブロッククオートハッシュコードは、オブジェクトを識別するために使用される数値です。 を識別するために使用される数値です。また、コレクション内のオブジェクトのインデックスとしても使用されます。 のインデックスにもなります。
GetHashCodeメソッドは、ハッシュアルゴリズムやハッシュテーブルのようなデータ構造で使用するのに適しています。 ハッシュテーブルのようなデータ構造での使用に適しています。
GetHashCode メソッドのデフォルトの実装は、異なるオブジェクトに対して一意な戻り値を保証するものではありません。 異なるオブジェクトに対して一意な戻り値を保証するものではありません。さらに .NET Framework は、GetHashCode メソッドのデフォルトの実装を保証していません。 GetHashCode メソッドのデフォルトの実装と、それが返す値は、.NET Framework の異なるバージョン間で同じになることを保証するものではありません。 .NET Frameworkの異なるバージョン間で同じ値を返すことは保証されていません。そのため、このメソッドのデフォルトの このメソッドのデフォルトの実装は、ハッシュの目的で一意のオブジェクト 識別子として使用してはなりません。
GetHashCodeメソッドは派生型によってオーバーライドされることがあります。値 型は、その型に適したハッシュ関数を提供するために、このメソッドをオーバーライドする必要があります。 その型に適したハッシュ関数を提供し、ハッシュテーブルの有用な分布を提供するために、このメソッドをオーバーライドする必要があります。 ハッシュテーブルの有用な分布を提供するために、このメソッドをオーバーライドする必要があります。一意性のために、ハッシュコードは、インスタンスフィールドまたはプロパティの値 ハッシュコードは、静的なフィールドやプロパティではなく、インスタンスフィールドやプロパティの値に基づかなければなりません。 プロパティの値に基づいていなければなりません。
Hashtableオブジェクトのキーとして使用されるオブジェクトもまた、GetHashCodeメソッドをオーバーライドする必要があります。 これらのオブジェクトは独自のハッシュコードを生成する必要があるため、GetHashCodeメソッドをオーバーライドする必要があります。 コードを生成しなければならないからです。キーとして使用されるオブジェクトが有用な キーとして使われるオブジェクトがGetHashCodeの有用な実装を提供しない場合、Hashtableオブジェクトの構築時にハッシュコードプロバイダを指定することができます。 を指定することができます。.NET Frameworkバージョン2.0以前では バージョン2.0以前は、ハッシュコード・プロバイダは System.Collections.IHashCodeProvider インターフェイスに基づいていました。バージョン 2.0 以降、ハッシュ コード プロバイダーは System.Collections.IEqualityComparer インターフェースに基づいています。
基本的に、ハッシュコードはハッシュテーブルを実現するために存在します。
2つの等しいオブジェクトは、等しいハッシュコードを持つことが保証されています。
2つの不等価なオブジェクトは
ではなく
ハッシュコードが不等であることが保証されています(これは衝突と呼ばれます)。
関連
-
[解決済み】C#でクエスチョンマークを2つ並べるとどんな意味になるのか?
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】名前 'ViewBag' が現在のコンテキストに存在しない - Visual Studio 2015
-
[解決済み] hashCode()をオーバーライドするオブジェクトのユニークIDを取得する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] C#の正しいバージョン番号を教えてください。
-
[解決済み] C#のオートプロパティに初期値を与える最良の方法は何ですか?
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] JavaでequalsとhashCodeをオーバーライドする際に考慮すべき事項は?
-
[解決済み】C#のyieldキーワードは何に使われるのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】指定されたキャストが有効でない?
-
[解決済み】プログラム実行中に1秒待つ
-
[解決済み】コンパイルエラー「未割り当てのローカル変数を使用しています」が発生したのはなぜですか?
-
[解決済み】Excel "外部テーブルが期待された形式ではありません。"
-
[解決済み】取り消せないメンバはメソッドのように使えない?
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】Linq 構文 - 複数列の選択
-
[解決済み】 C# 条件演算子エラー 代入、call、increment、decrement、await、new object 式のみ文として使用可能です。
-
[解決済み】プロセスが実行されているかどうかを知るには?