Language

IMap インターフェイス

定義

キーを値にマップするオブジェクト。

[Android.Runtime.Register("java/util/Map", "", "Java.Util.IMapInvoker")]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public interface IMap : Android.Runtime.IJavaObject, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/Map", "", "Java.Util.IMapInvoker")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type IMap = interface
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
派生
属性
実装

注釈

キーを値にマップするオブジェクト。 マップに重複するキーを含めることはできません。各キーは最大 1 つの値にマップできます。

このインターフェイスは、インターフェイスではなく完全に抽象クラスであった Dictionary クラスの代わりに使用されます。

Map インターフェイスには、3 つのコレクション ビューが用意されています。これにより、マップの内容を一連のキー、値のコレクション、またはキーと値のマッピングのセットとして表示できます。 マップの 順序 は、マップのコレクション ビュー上の反復子が要素を返す順序として定義されます。 TreeMap クラスのような一部のマップ実装では、遭遇順序に関して特定の保証が行われます。HashMap クラスのような他の実装では保証されません。 一般に、検出順序が定義されたマップは、 SequencedMap インターフェイスのサブタイプです。

注: 変更可能なオブジェクトがマップ キーとして使用される場合は、細心の注意を払う必要があります。 オブジェクトがマップ内のキーである間に、オブジェクトの値が equals 比較に影響する方法で変更された場合、マップの動作は指定されません。 この禁止の特別なケースは、マップ自体をキーとして含めないようにすることです。 マップ自体を値として含めることもできますが、 equals メソッドと hashCode メソッドは、このようなマップ上で明確に定義されなくなりました。

すべての汎用マップ実装クラスは、空のマップを作成する void (引数なし) コンストラクターと、 Map型の単一の引数を持つコンストラクターという 2 つの "標準" コンストラクターを提供する必要があります。このコンストラクターは、その引数と同じキー値マッピングを持つ新しいマップを作成します。 実際には、後者のコンストラクターを使用すると、ユーザーは任意のマップをコピーでき、目的のクラスと同等のマップが生成されます。 (インターフェイスにコンストラクターを含めることはできません)、この推奨事項を適用する方法はありませんが、JDK 内のすべての汎用マップ実装が準拠しています。

このインターフェイスに含まれる "破壊的" メソッド、つまり、操作対象のマップを変更するメソッドは、このマップが操作をサポートしていない場合に UnsupportedOperationException をスローするように指定されます。 この場合、呼び出しがマップに影響を与えない場合、これらのメソッドは UnsupportedOperationException をスローする可能性がありますが、必須ではありません。 たとえば、変更できないマップで #putAll(Map) メソッドを呼び出すと、マッピングが "重ね合わせ" になるマップが空の場合、例外をスローする場合がありますが、必須ではありません。

一部のマップ実装では、キーと値に制限があります。 たとえば、一部の実装では null キーと値が禁止され、一部の実装ではキーの型に制限があります。 無効なキーまたは値を挿入しようとすると、通常は NullPointerException または ClassCastException、チェックされていない例外がスローされます。 不適格なキーまたは値の存在を照会しようとすると、例外がスローされるか、単に false が返される可能性があります。一部の実装は以前の動作を示し、一部は後者を示します。 より一般的には、マップへの不適格な要素の挿入が完了しない不適格なキーまたは値に対する操作を試みると、実装のオプションで例外がスローされたり、成功したりする可能性があります。 このような例外は、このインターフェイスの仕様では "省略可能" としてマークされます。

Collections Framework インターフェイスの多くのメソッドは、 Object#equals(Object) equals メソッドの観点から定義されています。 たとえば、#containsKey(Object) containsKey(Object key) メソッドの仕様には、"このマップにtrueのようなキー kのマッピングが含まれている場合にのみ、(key==null ? k==null : key.equals(k))が返されます" と表示されます。 この仕様は、null 以外の引数Map.containsKeyを使用してkeyを呼び出すと、キー key.equals(k)に対してkが呼び出されることを意味するものではありません。 実装では、最適化を自由に実装できます。そのため、最初に 2 つのキーのハッシュ コードを比較するなどして、 equals 呼び出しを回避できます。 ( Object#hashCode() 仕様では、等しくないハッシュ コードを持つ 2 つのオブジェクトが等しくできないことが保証されます)。より一般的には、さまざまな Collections Framework インターフェイスの実装は、実装者が適切と判断した場合でも、基になる Object メソッドの指定された動作を自由に利用できます。

マップの再帰的トラバーサルを実行する一部のマップ操作は、マップが直接または間接的に自身を含む自己参照インスタンスの例外で失敗することがあります。 これには、 clone()、 equals()、 hashCode() 、および toString() メソッドが含まれます。 実装では必要に応じて自己参照シナリオを処理できますが、最新の実装では処理されません。

<h2>"変更不可">変更できないマップ</h2>

Map#of() Map.of、Map#ofEntries(Map.Entry...) Map.ofEntries、およびMap#copyOf Map.copyOfの静的ファクトリ メソッドを使用すると、変更できないマップを簡単に作成できます。 これらのメソッドによって作成される Map インスタンスには、次の特性があります。

<ul><li><>変更できません</i>。 キーと値を追加、削除、または更新することはできません。 Map でミューテーター メソッドを呼び出すと、常に UnsupportedOperationException がスローされます。 ただし、含まれているキーまたは値自体が変更可能な場合は、マップの動作に一貫性がない場合や、その内容が変わる可能性があります。 <li>キーと値 null 禁止します。 キーまたは値を null して作成しようとすると、 NullPointerExceptionになります。 <li>すべてのキーと値をシリアル化できる場合はシリアル化できます。 <li>作成時に重複するキーを拒否します。 静的ファクトリ メソッドに渡されたキーが重複すると、 IllegalArgumentException。 <li>マッピングの反復順序は指定されておらず、変更される可能性があります。 <li>値に基づいています。 プログラマは、#equals(Object) と等しいインスタンスを交換可能として扱い、同期に使用しないでください。または、予期しない動作が発生する可能性があります。 たとえば、将来のリリースでは、同期が失敗する可能性があります。 呼び出し元は、返されるインスタンスの ID に関する想定を行う必要はありません。 ファクトリは、新しいインスタンスを自由に作成したり、既存のインスタンスを再利用したりできます。 <li>シリアル化フォーム ページで指定されたとおりに シリアル化されます 。 </ul>

このインターフェイスは、Java コレクション フレームワークのメンバーです。

1.2 で追加されました。

Javaドキュメント。

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

プロパティ

名前 説明
Handle

基になる Android オブジェクトの JNI 値を取得します。

(継承元 IJavaObject)
IsEmpty

このマップが空かどうかを返します。

JniIdentityHashCode

ラップされたインスタンスの java.lang.System.identityHashCode() の値を返します。

(継承元 IJavaPeerable)
JniManagedPeerState

マネージド ピアの状態。

(継承元 IJavaPeerable)
JniObjectReferenceControlBlock

キーを値にマップするオブジェクト。

(継承元 IJavaPeerable)
JniPeerMembers

メンバー アクセスと呼び出しのサポート。

(継承元 IJavaPeerable)
PeerReference

ラップされたJava オブジェクト インスタンスのJniObjectReferenceを返します。

(継承元 IJavaPeerable)

メソッド

名前 説明
Clear()

このマップからすべてのマッピングを削除します (省略可能な操作)。

Compute(Object, IBiFunction)

指定したキーとその現在のマップされた値のマッピングの計算を試みます。現在のマッピングがない場合は null します (省略可能な操作)。

ComputeIfAbsent(Object, IFunction)

指定したキーがまだ値に関連付けられていない (または nullにマップされている) 場合は、指定されたマッピング関数を使用してその値の計算を試み、 null しない限り、このマップに入力します (省略可能な操作)。

ComputeIfPresent(Object, IBiFunction)

指定したキーの値が存在し、null 以外の場合は、キーとその現在のマップされた値 (省略可能な操作) を指定して、新しいマッピングの計算を試みます。

ContainsKey(Object)

このマップに指定したキーのマッピングが含まれている場合は、 true を返します。

ContainsValue(Object)

このマップが 1 つ以上のキーを指定した値にマップする場合は、 true を返します。

CopyOf(IDictionary)

指定された Map のエントリを含む変更不可能なマップを返します。

Disposed()

インスタンスが破棄されたときに呼び出されます。

(継承元 IJavaPeerable)
DisposeUnlessReferenced()

このインスタンスへの未処理の参照がない場合は、 Dispose()を呼び出します。それ以外の場合は何も実行しません。

(継承元 IJavaPeerable)
Entry(Object, Object)

指定されたキーと値を含む変更できない Entry を返します。

EntrySet()

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

Equals(Object)

指定したオブジェクトをこのマップと比較して等しいかどうかを確認します。

Finalized()

インスタンスが終了したときに呼び出されます。

(継承元 IJavaPeerable)
ForEach(IBiConsumer)

すべてのエントリが処理されるか、アクションが例外をスローするまで、このマップ内の各エントリに対して指定されたアクションを実行します。

Get(Object)

指定したキーのマップ先の値を返します。このマップにキーのマッピングが含まれている場合は null します。

GetHashCode()

このマップのハッシュ コード値を返します。

GetOrDefault(Object, Object)

指定したキーのマップ先の値を返します。このマップにキーのマッピングが含まれている場合は defaultValue します。

KeySet()

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

Merge(Object, Object, IBiFunction)

指定したキーがまだ値に関連付けられていないか、null に関連付けられている場合は、指定された null 以外の値に関連付けます (省略可能な操作)。

Of()

0 個のマッピングを含む変更不可能なマップを返します。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

10 個のマッピングを含む変更不可能なマップを返します。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

9 つのマッピングを含む変更不可能なマップを返します。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

8 つのマッピングを含む変更不可能なマップを返します。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

7 つのマッピングを含む変更できないマップを返します。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

6 つのマッピングを含む変更できないマップを返します。

Of(Object, Object, Object, Object, Object, Object, Object, Object, Object, Object)

5 つのマッピングを含む変更不可能なマップを返します。

Of(Object, Object, Object, Object, Object, Object, Object, Object)

4 つのマッピングを含む変更不可能なマップを返します。

Of(Object, Object, Object, Object, Object, Object)

3 つのマッピングを含む変更できないマップを返します。

Of(Object, Object, Object, Object)

2 つのマッピングを含む変更不可能なマップを返します。

Of(Object, Object)

1 つのマッピングを含む変更不可能なマップを返します。

OfEntries(IMapEntry[])

指定されたエントリから抽出されたキーと値を含む変更できないマップを返します。

Put(Object, Object)

指定した値を、このマップ内の指定したキーに関連付けます (省略可能な操作)。

PutAll(IDictionary)

指定したマップからすべてのマッピングをこのマップにコピーします (省略可能な操作)。

PutIfAbsent(Object, Object)

指定したキーがまだ値に関連付けられていない (または nullにマップされている) 場合は、それを指定した値に関連付け、 nullを返します。それ以外の場合は、現在の値を返します (省略可能な操作)。

Remove(Object, Object)

指定した値に現在マップされている場合にのみ、指定したキーのエントリを削除します (省略可能な操作)。

Remove(Object)

キーが存在する場合は、このマップからキーのマッピングを削除します (省略可能な操作)。

Replace(Object, Object, Object)

指定した値に現在マップされている場合にのみ、指定したキーのエントリを置き換えます (省略可能な操作)。

Replace(Object, Object)

指定したキーのエントリが現在何らかの値にマップされている場合にのみ、そのエントリを置き換えます (省略可能な操作)。

ReplaceAll(IBiFunction)

すべてのエントリが処理されるか、関数が例外をスローするまで、各エントリの値を、そのエントリで指定された関数を呼び出した結果に置き換えます (省略可能な操作)。

SetJniIdentityHashCode(Int32)

JniIdentityHashCodeによって返される値を設定します。

(継承元 IJavaPeerable)
SetJniManagedPeerState(JniManagedPeerStates)

キーを値にマップするオブジェクト。

(継承元 IJavaPeerable)
SetPeerReference(JniObjectReference)

PeerReferenceによって返される値を設定します。

(継承元 IJavaPeerable)
Size()

このマップ内のキーと値のマッピングの数を返します。

UnregisterFromRuntime()

ランタイムが将来の Java.Interop.JniRuntime+JniValueManager.PeekValue 呼び出しから返されないように、このインスタンスの登録を解除します。

(継承元 IJavaPeerable)
Values()

このマップに含まれる値の Collection ビューを返します。

拡張メソッド

名前 説明
GetJniTypeName(IJavaPeerable)

インスタンス selfの型の JNI 名を取得します。

JavaAs<TResult>(IJavaPeerable)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

キーを値にマップするオブジェクト。

TryJavaCast<TResult>(IJavaPeerable, TResult)

selfを強制的にTResult入力し、強制型がJava側で有効であることを確認します。

適用対象