Share via


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
衍生
屬性
實作

備註

物件,會將索引鍵對應至值。 對應不能包含重複的索引鍵;每個索引鍵最多可以對應至一個值。

這個介面會取代 Dictionary 類別,這是一個完全抽象的類別,而不是介面。

介面 Map 提供三個 集合檢視,可讓地圖的內容檢視為一組索引鍵、值集合,或一組索引鍵/值對應。 地圖 的順序 會定義為地圖集合檢視上反覆運算器傳回其元素的順序。 某些對應實作,例如 TreeMap 類別,會根據其順序進行特定保證;其他則如 類別一樣 HashMap ,則不會。

注意:如果使用可變動的物件做為地圖索引鍵,則必須特別小心。 如果物件的值變更的方式會影響 equals 比較,而物件是地圖中的索引鍵,則不會指定地圖的行為。 這種禁止的特殊案例是,地圖無法將其本身包含為索引鍵。 雖然地圖可以包含本身做為值,但建議您特別小心: equalshashCode 方法已不再定義于這類地圖上。

所有一般用途對應實作類別都應該提供兩個「標準」建構函式:void (沒有任何引數) 建構函式,其會建立類型為單一引數 Map 的建構函式,其會建立具有相同索引鍵/值對應與其引數相同的新對應。 實際上,後者建構函式可讓使用者複製任何對應,產生所需類別的對等對應。 無法強制執行此建議 (,因為介面不能包含建構函式) ,但 JDK 中的所有一般用途對應實作都符合規範。

這個介面中包含的「破壞性」方法,也就是修改其操作對應的方法,如果這個對應不支援作業,則會指定擲回 UnsupportedOperationException 。 如果是這種情況,這些方法可能不需要,但如果叫用對地圖沒有任何作用,則擲 UnsupportedOperationException 回 。 例如,在 #putAll(Map) 不可修改的對應上叫用 方法,但並非必要,如果對應為「迭加」的對應是空的,則會擲回例外狀況。

某些對應實作對它們可能包含的索引鍵和值有限制。 例如,某些實作會禁止 Null 索引鍵和值,有些則有其索引鍵類型的限制。 嘗試插入不符合資格的索引鍵或值會擲回未核取的例外狀況,通常是 NullPointerExceptionClassCastException 。 嘗試查詢不符合資格的索引鍵或值是否存在可能會擲回例外狀況,或可能只傳回 false;有些實作會展示先前的行為,有些則會展示後者。 更普遍地,嘗試在不符合資格的索引鍵或值上嘗試作業,其完成不會在對應中插入不符合資格的專案,可能會擲回例外狀況,否則可能會在實作的選項中成功。 這類例外狀況會在此介面的規格中標示為「選擇性」。

集合架構介面中的許多方法都是以 方法為基礎 Object#equals(Object) equals 來定義。 例如,方法的 #containsKey(Object) containsKey(Object key) 規格指出:「只有在此對應包含索引鍵 k 的對應時,才會傳回 ,如此才能傳 (key==null ? k==null : key.equals(k))true 。」 此規格 不應該 被修改,以表示 Map.containsKey 叫用非 Null 引數 key 會導致 key.equals(k) 針對任何索引鍵 k 叫用 。 實作可以自由實作優化 equals ,例如,藉由先比較兩個索引鍵的雜湊碼,藉此避免叫用。 (規格 Object#hashCode() 保證具有不相等雜湊碼的兩個物件不相等。) 較通常,各種 Collections Framework 介面的實作可以自由利用實作者認為適當的基礎 Object 方法指定行為。

某些執行遞迴周遊地圖的對應作業可能會失敗,但對應直接或間接包含本身的自我引用實例例外。 clone()這包括 、 equals()hashCode()toString() 方法。 實作可以選擇性地處理自我參考案例,不過大部分的實作都不會這麼做。

<h2 > 「unmodifiable」 > Unmodifiable Maps < /h2>

Map#of() Map.ofMap#ofEntries(Map.Entry...) Map.ofEntriesMap#copyOf Map.copyOf 靜態處理站方法提供方便的方式,以建立不可修改的對應。 Map這些方法所建立的實例具有下列特性:

<ul >< li > 它們是 <> i unmodifiable < /i > 。 無法新增、移除或更新索引鍵和值。 呼叫 Map 上的任何 Mutator 方法一律 UnsupportedOperationException 會導致擲回。 不過,如果包含的索引鍵或值本身是可變動的,這可能會導致 Map 的行為不一致,或其內容似乎變更。 <li > 它們不允許 null 索引鍵和值。 嘗試使用 null 索引鍵或值建立它們會導致 NullPointerException 。 <li > 如果所有索引鍵和值皆可序列化,則為可序列化。 <li > 它們會在建立時拒絕重複的金鑰。 傳遞至靜態 Factory 方法的重複索引鍵會導致 IllegalArgumentException 。 <li > 未指定對應的反復專案順序,而且可能會變更。 <li > 它們是以值為基礎的。 程式設計人員應該將 #equals (物件) 相等的實例視為可交換,而且不應該將它們用於同步處理,或可能發生無法預期的行為。 例如,在未來的版本中,同步處理可能會失敗。 呼叫端不應假設傳回實例的身分識別。 處理站是免費的,可以建立新的實例或重複使用現有的實例。 <li > 它們會依 [序列化表單 ] 頁面上的指定來序列化。 </ul>

這個介面是 JAVA Collections Framework的成員。

已在 1.2 中新增。

java.util.Map JAVA 檔。

此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

屬性

Handle

取得基礎 Android 物件的 JNI 值。

(繼承來源 IJavaObject)
IsEmpty

傳回這個對應是否空白。

JniIdentityHashCode

傳回包裝實例的 java.lang.System.identityHashCode() 值。

(繼承來源 IJavaPeerable)
JniManagedPeerState

受控對等的狀態。

(繼承來源 IJavaPeerable)
JniPeerMembers

成員存取和調用支援。

(繼承來源 IJavaPeerable)
PeerReference

JniObjectReference 回已包裝 JAVA 物件實例的 。

(繼承來源 IJavaPeerable)

方法

Clear()

從這個對應中移除所有對應, (選擇性作業) 。

Compute(Object, IBiFunction)

嘗試計算指定索引鍵的對應及其目前對應值 (,或者 null 如果沒有目前的對應) 。

ComputeIfAbsent(Object, IFunction)

如果指定的索引鍵尚未與值相關聯 (或對應至 null) ,請嘗試使用指定的對應函式計算其值,並輸入到此對應中,除非 。 null

ComputeIfPresent(Object, IBiFunction)

如果指定索引鍵的值存在且非 Null,則嘗試計算新的對應,指定索引鍵及其目前的對應值。

ContainsKey(Object)

true如果這個對應包含指定索引鍵的對應,則傳回 。

ContainsValue(Object)

如果這個對應會將一個或多個索引鍵對應至指定的值,則傳 true 回 。

CopyOf(IDictionary)

傳回不可修改的 Map,其中包含指定之 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()

傳回包含零個對應的不可修改對應。

Of(Object, Object)

傳回包含單一對應的不可修改對應。

Of(Object, Object, Object, Object)

傳回包含兩個對應的不可修改對應。

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

傳回包含三個對應的不可修改對應。

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

傳回包含四個對應的不可修改對應。

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

傳回包含五個對應的不可修改對應。

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

傳回包含六個對應的不可修改對應。

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

傳回包含七個對應的不可修改對應。

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

傳回包含八個對應的不可修改對應。

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

傳回包含九個對應的不可修改對應。

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

傳回包含十個對應的不可修改對應。

OfEntries(IMapEntry[])

傳回不可變的對應,其中包含從指定專案擷取的索引鍵和值。

Put(Object, Object)

將指定的值與此對應中的指定索引鍵產生關聯, (選擇性作業) 。

PutAll(IDictionary)

將指定之對應中的所有對應複製到此對應 (選擇性作業) 。

PutIfAbsent(Object, Object)

如果指定的索引鍵尚未與值相關聯 (或對應至 null) 將它與指定值產生關聯,並傳回 ,否則會傳回 null 目前的值。

Remove(Object)

如果索引鍵存在 (選擇性作業,則會從這個對應中移除索引鍵的對應) 。

Remove(Object, Object)

只有在目前對應至指定的值時,才會移除指定索引鍵的專案。

Replace(Object, Object)

只有當指定的索引鍵目前對應至某些值時,才會取代指定索引鍵的專案。

Replace(Object, 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傳回這個對應中包含的值檢視。

擴充方法

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

物件,會將索引鍵對應至值。

GetJniTypeName(IJavaPeerable)

物件,會將索引鍵對應至值。

適用於