IdentityHashMap クラス

定義

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

[Android.Runtime.Register("java/util/IdentityHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class IdentityHashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/IdentityHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type IdentityHashMap = class
    inherit AbstractMap
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface IMap
継承
IdentityHashMap
属性
実装

注釈

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。 言い換えると、 では IdentityHashMap、2 つのキー k1k2 は、 の場合 (k1==k2)にのみ等しいと見なされます。 (通常 Map の実装では (のような HashMap) 2 つのキー k1k2 が等しいと見なされます (と の場合 (k1==null ? k2==null : k1.equals(k2))のみ)。

<b>このクラスは汎用Map実装ではありません。 このクラスは インターフェイスを Map 実装しますが、意図的に一般的なコントラクトに違反 Map's し、オブジェクトを比較するときに メソッドを equals 使用する必要があります。 このクラスは、参照と等価のセマンティクスが必要なまれな場合にのみ使用するように設計されています。</B>

このクラスの一般的な用途は、シリアル化やディープ コピーなど、 トポロジを保持するオブジェクト グラフ変換です。 このような変換を実行するには、プログラムは、既に処理されているすべてのオブジェクト参照を追跡する "ノード テーブル" を維持する必要があります。 ノード テーブルが等しい場合でも、個別のオブジェクトを等しくすることはできません。 このクラスの一般的なもう 1 つの用途は、 プロキシ オブジェクトを維持することです。 たとえば、デバッグ機能では、デバッグ対象のプログラム内の各オブジェクトのプロキシ オブジェクトを保持する必要がある場合があります。

このクラスは、オプションのすべてのマップ操作を提供し、値とキーをnull許可nullします。 このクラスは、マップの順序に関する保証を行いません。特に、順序が時間の経過と同時に一定であることを保証するものではありません。

このクラスは、システム ID ハッシュ関数 () がバケット間で要素を適切に分散すると仮定して、基本的な操作 (getSystem#identityHashCode(Object)put) の定数時間パフォーマンスを提供します。

このクラスには 1 つのチューニング パラメーターがあります (パフォーマンスには影響しますが、セマンティクスには影響しません)。 予想される最大サイズです。 このパラメーターは、マップが保持する必要があるキーと値のマッピングの最大数です。 内部的には、このパラメーターを使用して、最初にハッシュ テーブルを構成するバケットの数を決定します。 予想される最大サイズとバケット数の間の正確な関係は指定されていません。

マップのサイズ (キーと値のマッピングの数) が予想される最大サイズを十分に超えると、バケットの数が増えます。 バケットの数 ("rehashing") を増やすとかなりコストがかかる可能性があるため、予想される最大サイズが十分に大きい ID ハッシュ マップを作成する場合に料金が発生します。 一方、コレクション ビューに対するイテレーションでは、ハッシュ テーブル内のバケットの数に比例した時間が必要になるため、反復のパフォーマンスやメモリ使用量に特に関心がある場合は、予想される最大サイズを高く設定しすぎないようにします。

<strong>この実装は同期されないことに注意してください。</strong> 複数のスレッドが同時に ID ハッシュ マップにアクセスし、少なくとも 1 つのスレッドが構造的にマップを変更する場合は、外部で同期 する必要があります 。 (構造変更とは、1 つ以上のマッピングを追加または削除する操作です。インスタンスに既に含まれているキーに関連付けられている値を変更するだけでは、構造上の変更ではありません)。これは通常、マップを自然にカプセル化するオブジェクトを同期することによって実現されます。

このようなオブジェクトが存在しない場合は、 メソッドを使用してマップを Collections#synchronizedMap Collections.synchronizedMap "ラップ" する必要があります。 これは、マップへの誤った同期されていないアクセスを防ぐために、作成時に行うのが最善です。

Map m = Collections.synchronizedMap(new IdentityHashMap(...));

このクラスのすべての "コレクション ビュー メソッド" によって返されるコレクションのメソッドによって iterator 返される反復子は 、フェイル ファーストです。反復子が作成された後、反復子が作成された後にいつでもマップが構造的に変更された場合、反復子の独自 remove のメソッドを除き、反復子は を ConcurrentModificationExceptionスローします。 したがって、同時変更に直面すると、反復子は、将来不確定な時点で任意の非決定論的な動作を危険にさらすのではなく、迅速かつクリーンに失敗します。

反復子のフェイルファースト動作は、非同期の同時変更がある場合にハード保証を行うことは一般的に不可能であるため、保証できないことに注意してください。 フェイルファースト反復子は、ベスト エフォートベースでスロー ConcurrentModificationException します。 したがって、この例外に依存するプログラムを正しく記述するのは間違っています。 フェイルファースト反復子はバグを検出するためにのみ使用する必要があります。

このクラスは、 Java Collections Framework のメンバーです。

1.4 で追加されました。

java.util.IdentityHashMapJava ドキュメント。

このページの一部は、によって作成および共有された作業に基づく変更であり、に記載されている条件に従って使用されます。

コンストラクター

IdentityHashMap()

既定の予想最大サイズ (21) を使用して、空の新しい ID ハッシュ マップを構築します。

IdentityHashMap(IDictionary)

指定したマップ内のキーと値のマッピングを含む新しい ID ハッシュ マップを構築します。

IdentityHashMap(Int32)

予想される最大サイズを指定して、新しい空のマップを構築します。

IdentityHashMap(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

プロパティ

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
IsEmpty

追加する

(継承元 AbstractMap)
JniIdentityHashCode

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
JniPeerMembers

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

PeerReference

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
ThresholdClass

この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

ThresholdType

この API は Mono for Android インフラストラクチャをサポートしており、コードから直接使用するためのものではありません。

メソッド

Clear()

追加する

(継承元 AbstractMap)
Clone()

この ID ハッシュ マップの浅いコピーを返します。キーと値自体は複製されません。

ContainsKey(Object)

追加する

(継承元 AbstractMap)
ContainsValue(Object)

追加する

(継承元 AbstractMap)
Dispose()

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
Dispose(Boolean)

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
EntrySet()

このマップに Set 含まれるマッピングのビューを返します。

Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
ForEach(IBiConsumer)

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

Get(Object)

追加する

(継承元 AbstractMap)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
JavaFinalize()

オブジェクトへの参照がなくなったとガベージ コレクションが判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
KeySet()

追加する

(継承元 AbstractMap)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドを起動します。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドを起動します。

(継承元 Object)
Put(Object, Object)

追加する

(継承元 AbstractMap)
PutAll(IDictionary)

追加する

(継承元 AbstractMap)
Remove(Object)

追加する

(継承元 AbstractMap)
ReplaceAll(IBiFunction)

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
Size()

追加する

(継承元 AbstractMap)
ToArray<T>()

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
Values()

追加する

(継承元 AbstractMap)
Wait()

現在のスレッドが起動するまで待機します。通常<は、通知</em> または>< em 中断</em によって待機します>。>

(継承元 Object)
Wait(Int64)

現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドが起動するまで待機します。通常<は、通知></em> または <>em 中断</em>、または特定のリアルタイムが経過するまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

IJavaPeerable.Disposed()

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
IJavaPeerable.Finalized()

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

(継承元 Object)

拡張メソッド

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

GetJniTypeName(IJavaPeerable)

このクラスは、キー (と 値) を比較するときに、オブジェクトの等価性の代わりに参照等価性を使用して、ハッシュ テーブルを持つインターフェイスを実装 Map します。

適用対象