語言

WeakHashMap 類別

定義

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

[Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class WeakHashMap : Java.Util.AbstractMap, IDisposable
[<Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type WeakHashMap = class
    inherit AbstractMap
    interface IMap
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
繼承
屬性
實作

備註

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。 當 a WeakHashMap 中的條目不再被正常使用時,將自動移除。 更精確地說,某一金鑰的映射存在,並不會阻止該金鑰被垃圾回收器丟棄,也就是說,該金鑰會被最終化、最終定型,然後再被回收。 當一個鍵被丟棄時,其條目會有效地從映射中移除,因此此類別的行為與其他實作有所不同 Map

同時支援 null 值與 null 鍵。 此級車的性能特性與本HashMap級相似,且效率參數相同:<電磁>初始容量</電磁><及電磁>負載因子</電磁>。

與大多數集合類別相同,此類別並非同步。 可用此WeakHashMap方法構建同步裝置Collections#synchronizedMap Collections.synchronizedMap

此類別主要用於使用其 equals 方法測試物件身份 == 的鍵物件,使用運算子。 一旦此類金鑰被丟棄,就無法再重建,因此不可能在某個時間點查詢該金鑰 WeakHashMap ,並驚訝其條目已被移除。 此類別對於方法 equals 不基於物件身份的金鑰物件(如 String 實例)運作良好。 然而,對於這些可重複的金鑰物件,自動移除 WeakHashMap 已丟棄金鑰的條目可能會造成混淆。

WeakHashMap 類別的行為部分依賴於垃圾回收器的動作,因此這個類別不具數常見(但非必需) Map 不變量。 由於垃圾回收器隨時可能丟棄金鑰,因此 a WeakHashMap 可能會表現得像是未知的執行緒在悄悄移除條目。 特別地,即使你在某WeakHashMap個實例上同步且不呼叫任何變異器方法,方法仍可能size隨時間回傳較小的值,isEmpty方法回傳falsetruecontainsKey,然後回傳true,之後false對給定鍵get回傳,方法回傳給定鍵值後回傳,null 對於put先前看似在映射中的鍵,方法回傳nullremove與回傳false方法,以及對鍵組、值集合和入口集合的連續檢查,得出的元素數量逐漸減少。

a WeakHashMap 中的每個關鍵物件會間接儲存為弱參考的指稱。 因此,只有在垃圾回收器清除地圖內外對該鑰匙的弱參考後,才能自動移除該鑰匙。

<強實>作注意:</strong> a中的 WeakHashMap 值物件由普通強參考所持有。 因此應謹慎確保值物件不會直接或間接強烈指向自己的鍵,因為這樣會防止鍵被丟棄。 請注意,值物件可以透過自身間接指向其鍵 WeakHashMap ;也就是說,值物件可以強指涉另一個鍵物件,而該物件的相關值物件又強指涉第一個值物件的鍵。 如果映射中的值不依賴映射本身有強參考,一種處理方法是先將值本身包裹在 WeakReferences 內再插入,例如: m.put(key, new WeakReference(value)),然後對每個 get展開。

所有本類別「集合檢視方法」所回傳的集合中,方法回傳 iterator 的迭代器是 失敗快速的:若在迭代器建立後的任何時間對映射進行結構性修改,除非透過迭代器自身 remove 的方法,迭代器會拋出一個 ConcurrentModificationException。 因此,面對並行修改時,迭代器能迅速且乾淨地失敗,而非冒著未來某個未知時間出現任意且非確定性行為的風險。

請注意,迭代器的失效快速行為無法保證,因為一般而言,在存在非同步的並行修改時,無法做出任何硬性保證。 失效快速迭代器則是以盡力而為的方式投擲 ConcurrentModificationException 。 因此,撰寫依賴此例外來確保正確性的程式是錯誤的: 迭代器的快速失效行為應該只用來偵測錯誤。

此類別是 Java 集合框架的成員。

在 1.2 版本中加入。

java.util.WeakHashMapJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

建構函式

名稱 Description
WeakHashMap()

建造一個新的空置 WeakHashMap ,預設初始容量為16,負載因子為0。

WeakHashMap(IDictionary)

構造 WeakHashMap 一個與指定映射相同映射的新

WeakHashMap(Int32, Single)

以給定初始容量和載重因子建造一個新的空機 WeakHashMap

WeakHashMap(Int32)

以給定初始容量及預設負載因子(0)建造一個新的空機 WeakHashMap

WeakHashMap(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
IsEmpty

待補充

(繼承來源 AbstractMap)
JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
JniPeerMembers

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ThresholdClass

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

ThresholdType

此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。

方法

名稱 Description
Clear()

待補充

(繼承來源 AbstractMap)
Clone()

建立並回傳此物件的副本。

(繼承來源 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
ContainsKey(Object)

待補充

(繼承來源 AbstractMap)
ContainsValue(Object)

待補充

(繼承來源 AbstractMap)
Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
EntrySet()

回傳 Set 此地圖中所包含映射的視圖。

Equals(Object)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
Equals(Object)

表示是否有其他物體「等同」於此物。

(繼承來源 Object)
ForEach(IBiConsumer)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

Get(Object)

待補充

(繼承來源 AbstractMap)
GetHashCode()

回傳物件的雜湊碼值。

(繼承來源 Object)
JavaFinalize()
已淘汰.

當垃圾回收判定該物件不再有相關參考時,由垃圾回收器呼叫。

(繼承來源 Object)
KeySet()

待補充

(繼承來源 AbstractMap)
NewWeakHashMap(Int32)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

Notify()

喚醒一個正在該物件監視器上等待的執行緒。

(繼承來源 Object)
NotifyAll()

喚醒所有等待該物件監視器的執行緒。

(繼承來源 Object)
Put(Object, Object)

待補充

(繼承來源 AbstractMap)
PutAll(IDictionary)

待補充

(繼承來源 AbstractMap)
Remove(Object)

待補充

(繼承來源 AbstractMap)
ReplaceAll(IBiFunction)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
Size()

待補充

(繼承來源 AbstractMap)
ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
Values()

待補充

(繼承來源 AbstractMap)
Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

(繼承來源 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

介面以雜湊表實作Map,並有<弱>鍵/弱<鍵>。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於