WeakHashMap 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
介面的雜湊表實作 Map
,具有 < em > 弱式索引鍵 < /em > 。
[Android.Runtime.Register("java/util/WeakHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class WeakHashMap : Java.Util.AbstractMap, IDisposable, Java.Interop.IJavaPeerable
[<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
,具有 < em > 弱式索引鍵 < /em > 。 當索引鍵不再在一般使用中時,會自動移除 中的 WeakHashMap
專案。 更精確地說,給定索引鍵的對應不會防止垃圾收集行程捨棄該索引鍵,也就是讓完成、完成,然後回收。 當索引鍵遭到捨棄時,其專案實際上會從對應中移除,因此此類別的行為與其他實作稍有不同 Map
。
同時支援 Null 值和 Null 索引鍵。 這個類別的效能特性類似于 類別的 HashMap
效能特性,而且具有相同效率參數 < em > initial capacity < /em > 和 < em > load factor < /em > 。
如同大部分的集合類別,此類別不會同步處理。 同步 WeakHashMap
處理可以使用 方法來建構 Collections#synchronizedMap Collections.synchronizedMap
。
此類別主要用於與索引鍵物件搭配使用,其 equals
方法會使用 ==
運算子來測試物件識別。 一旦捨棄這類金鑰,就無法重新建立它,因此稍後就無法在 中 WeakHashMap
查閱該索引鍵,並意外地移除其專案。 這個類別會與方法不是以物件身分識別為基礎的索引鍵物件 equals
完美搭配運作,例如 String
實例。 不過,透過這類可重新建立的索引鍵物件,自動移除 WeakHashMap
其索引鍵已被捨棄的專案可能會造成混淆。
類別的行為取決於垃圾收集行程的 WeakHashMap
動作,因此數個熟悉的 (,但不需要) Map
不因此類別而沒有保留。 因為垃圾收集行程可能會隨時捨棄索引鍵,所以 WeakHashMap
的行為可能會像未知執行緒以無訊息方式移除專案一樣。 特別是,即使您在 實例上 WeakHashMap
同步處理並叫用其任何 Mutator 方法,方法還是可能會 size
傳回一段時間較小的值、讓 isEmpty
方法 false
傳回 ,然後傳回方法,然後傳回指定索引鍵的 方法, false
然後 containsKey
true
讓 方法 true
傳回指定索引鍵的值, get
但稍後 null
傳回 。 傳 put
回 null
的方法,以及 remove
傳回之前出現在對應中索引鍵的方法,以及針對索引鍵集、值集合和專案集的後續檢查傳回 false
的方法,以產生後續較小的專案數。
中的每個 WeakHashMap
索引鍵物件都會間接儲存為弱式參考的參考。 因此,只有垃圾收集行程已清除地圖內部和外部的弱式參考之後,才會自動移除索引鍵。
<強實 > 作附注: < /strong > 中的值物件 WeakHashMap
是由一般強式參考所保留。 因此,請小心確保值物件不會直接或間接參考自己的索引鍵,因為這會防止捨棄索引鍵。 請注意,值物件可能會透過本身間接參照其索引鍵 WeakHashMap
;也就是說,值物件可能會強式參考其他索引鍵物件,其相關聯的值物件接著會強式參考第一個值物件的索引鍵。 如果對應中的值不依賴具有強式參考的對應,其中一個處理方式是在插入之前將值本身包裝在 內 WeakReferences
,如: m.put(key, new WeakReference(value))
,然後在每個 get
上解除包裝。
這個類別之「集合檢視方法」所傳回之集合方法所傳回 iterator
的反覆運算器會 失敗快速:如果在建立反覆運算器之後隨時以結構化方式修改對應,除了透過反覆運算器自己的 remove
方法以外,反覆運算器會擲回 ConcurrentModificationException
。 因此,在同時修改時,反覆運算器會快速且清楚地失敗,而不是在未來不具決定性的不具決定性行為上風險。
請注意,反覆運算器的失敗快速行為無法保證,一般而言,不可能在未同步處理並行修改的情況下進行任何硬式保證。 以最佳方式擲回 ConcurrentModificationException
快速反覆運算器。 因此,撰寫相依于此例外狀況的程式是否正確性是錯誤的: 反覆運算器的失敗快速行為應該只用來偵測錯誤。
這個類別是 JAVA Collections Framework的成員。
已在 1.2 中新增。
的 java.util.WeakHashMap
JAVA 檔。
此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。
建構函式
WeakHashMap() |
使用預設初始容量 (16) 建構新的空白 |
WeakHashMap(IDictionary) |
使用與指定之對應相同的對應來建構新的 |
WeakHashMap(Int32) |
使用指定的初始容量和預設負載因數, (0 建構新的空白 |
WeakHashMap(Int32, Single) |
使用指定的初始容量和指定的負載因數,建構新的空白 |
WeakHashMap(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 標記法時使用的建構函式;由執行時間呼叫。 |
屬性
Class |
傳回這個 |
Handle |
基礎 Android 實例的控制碼。 (繼承來源 Object) |
IsEmpty |
要新增 (繼承來源 AbstractMap) |
JniIdentityHashCode |
介面的雜湊表實作 |
JniPeerMembers |
介面的雜湊表實作 |
PeerReference |
介面的雜湊表實作 |
ThresholdClass |
此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。 |
ThresholdType |
此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。 |
方法
Clear() |
要新增 (繼承來源 AbstractMap) |
Clone() |
建立並傳回這個 物件的複本。 (繼承來源 Object) |
ContainsKey(Object) |
要新增 (繼承來源 AbstractMap) |
ContainsValue(Object) |
要新增 (繼承來源 AbstractMap) |
Dispose() |
介面的雜湊表實作 |
Dispose(Boolean) |
介面的雜湊表實作 |
EntrySet() |
傳 |
Equals(Object) |
指出其他物件是否「等於」這個物件。 (繼承來源 Object) |
ForEach(IBiConsumer) |
介面的雜湊表實作 |
Get(Object) |
要新增 (繼承來源 AbstractMap) |
GetHashCode() |
傳回此物件的雜湊碼值。 (繼承來源 Object) |
JavaFinalize() |
當垃圾收集判斷物件不再參考物件時,垃圾收集行程會在物件上呼叫。 (繼承來源 Object) |
KeySet() |
要新增 (繼承來源 AbstractMap) |
Notify() |
喚醒正在等候此物件監視器的單一線程。 (繼承來源 Object) |
NotifyAll() |
喚醒正在等候此物件監視器的所有線程。 (繼承來源 Object) |
Put(Object, Object) |
要新增 (繼承來源 AbstractMap) |
PutAll(IDictionary) |
要新增 (繼承來源 AbstractMap) |
Remove(Object) |
要新增 (繼承來源 AbstractMap) |
ReplaceAll(IBiFunction) |
介面的雜湊表實作 |
SetHandle(IntPtr, JniHandleOwnership) |
設定 Handle 屬性。 (繼承來源 Object) |
Size() |
要新增 (繼承來源 AbstractMap) |
ToArray<T>() |
介面的雜湊表實作 |
ToString() |
傳回物件的字串表示。 (繼承來源 Object) |
UnregisterFromRuntime() |
介面的雜湊表實作 |
Values() |
要新增 (繼承來源 AbstractMap) |
Wait() |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > 。 >< (繼承來源 Object) |
Wait(Int64) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的執行緒等到喚醒為止,通常是 em < notified/em > 或 < em > interrupted < /em > ,或直到經過一定數量的即時為止。 <> (繼承來源 Object) |
明確介面實作
IJavaPeerable.Disposed() |
介面的雜湊表實作 |
IJavaPeerable.DisposeUnlessReferenced() |
介面的雜湊表實作 |
IJavaPeerable.Finalized() |
介面的雜湊表實作 |
IJavaPeerable.JniManagedPeerState |
介面的雜湊表實作 |
IJavaPeerable.SetJniIdentityHashCode(Int32) |
介面的雜湊表實作 |
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates) |
介面的雜湊表實作 |
IJavaPeerable.SetPeerReference(JniObjectReference) |
介面的雜湊表實作 |
擴充方法
JavaCast<TResult>(IJavaObject) |
執行 Android 執行時間檢查的類型轉換。 |
JavaCast<TResult>(IJavaObject) |
介面的雜湊表實作 |
GetJniTypeName(IJavaPeerable) |
介面的雜湊表實作 |