HashMap クラス

定義

インターフェイスのハッシュ テーブル ベースの Map 実装。

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

注釈

インターフェイスのハッシュ テーブル ベースの Map 実装。 この実装では、オプションのすべてのマップ操作が提供され、値とキーがnull許可nullされます。 (クラスは HashMap 、 とほぼ同じですが、同期されておらず、null を許可している点が異な Hashtableっています)。このクラスは、マップの順序に関する保証を行いません。特に、順序が時間の経過と同時に一定であることを保証するものではありません。

この実装は、ハッシュ関数がバケット間で要素を適切に分散すると仮定して、基本的な操作 (getput) に対して定数時間のパフォーマンスを提供します。 コレクション ビューに対するイテレーションには、インスタンスの HashMap "容量" に比例する時間 (バケットの数) とそのサイズ (キーと値のマッピングの数) が必要です。 したがって、イテレーションのパフォーマンスが重要な場合は、初期容量を高く設定しないこと (または負荷係数が低すぎる) ことが非常に重要です。

HashMap インスタンスには、そのパフォーマンスに影響を与える 2 つのパラメーターがあります。 初期容量読み込み係数です。 容量はハッシュ テーブル内のバケットの数であり、初期容量はハッシュ テーブルが作成された時点の容量です。 読み込み係数は、ハッシュ テーブルの容量が自動的に増加する前に取得できる完全な量の測定値です。 ハッシュ テーブル内のエントリの数が読み込み係数と現在の容量の積を超えると、ハッシュ テーブルが 再ハッシュ されます (つまり、内部データ構造が再構築されます)。ハッシュ テーブルのバケット数が約 2 倍になるようにします。

一般に、既定の負荷係数 (.75) は、時間コストと空間コストの間で良好なトレードオフを提供します。 値を大きくすると、領域のオーバーヘッドは減少しますが、ルックアップ コストは増加します (および など、getputクラスのほとんどの操作にHashMap反映されます)。 リハッシュ操作の数を最小限に抑えるために、初期容量を設定するときに、マップ内の予想されるエントリ数とその読み込み係数を考慮する必要があります。 初期容量が最大エントリ数を負荷係数で割った数を超える場合、リハッシュ操作は行われません。

インスタンスに多くのマッピングを格納する場合、十分に大きな容量で HashMap マッピングを作成すると、テーブルを拡張するために必要に応じて自動再ハッシュを実行するよりも、マッピングをより効率的に格納できます。 同じ hashCode() キーを多数使用すると、ハッシュ テーブルのパフォーマンスが低下する確実な方法であることに注意してください。 影響を改善するために、キーが の場合、このクラスでは Comparableキー間の比較順序を使用して、結びつきを解除できます。

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

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

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

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

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

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

1.2 に追加されました。

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

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

コンストラクター

HashMap()

既定の初期容量 (16) と既定の読み込み係数 (0) を持つ空 HashMap の を構築します。

HashMap(IDictionary)

指定した と同じマッピングを使用して新しい HashMap を構築します Map

HashMap(Int32)

指定した初期容量と既定の読み込み係数 (0) を持つ空 HashMap の を構築します。

HashMap(Int32, Single)

指定した初期容量と負荷係数を持つ空 HashMap の を構築します。

HashMap(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()

この HashMap インスタンスの浅いコピーを返します。キーと値自体は複製されません。

Compute(Object, IBiFunction)

インターフェイスのハッシュ テーブル ベースの Map 実装。

ComputeIfAbsent(Object, IFunction)

インターフェイスのハッシュ テーブル ベースの Map 実装。

ComputeIfPresent(Object, IBiFunction)

インターフェイスのハッシュ テーブル ベースの Map 実装。

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)
GetOrDefault(Object, Object)

インターフェイスのハッシュ テーブル ベースの Map 実装。

JavaFinalize()

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

(継承元 Object)
KeySet()

追加する

(継承元 AbstractMap)
Merge(Object, Object, IBiFunction)

インターフェイスのハッシュ テーブル ベースの Map 実装。

Notify()

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

(継承元 Object)
NotifyAll()

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

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

追加する

(継承元 AbstractMap)
PutAll(IDictionary)

追加する

(継承元 AbstractMap)
PutIfAbsent(Object, Object)

インターフェイスのハッシュ テーブル ベースの Map 実装。

Remove(Object)

追加する

(継承元 AbstractMap)
Remove(Object, Object)

指定したキーのマッピングが存在する場合は、このマップから削除します。

Replace(Object, Object)

インターフェイスのハッシュ テーブル ベースの Map 実装。

Replace(Object, Object, Object)

インターフェイスのハッシュ テーブル ベースの Map 実装。

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 実装。

適用対象