Share via


WeakHashMap 類別

定義

介面的雜湊表實作 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
繼承
WeakHashMap
屬性
實作

備註

介面的雜湊表實作 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 然後 containsKeytrue 讓 方法 true 傳回指定索引鍵的值, get 但稍後 null 傳回 。 傳 putnull 的方法,以及 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 ,並將負載因數 (0。

WeakHashMap(IDictionary)

使用與指定之對應相同的對應來建構新的 WeakHashMap

WeakHashMap(Int32)

使用指定的初始容量和預設負載因數, (0 建構新的空白 WeakHashMap

WeakHashMap(Int32, Single)

使用指定的初始容量和指定的負載因數,建構新的空白 WeakHashMap

WeakHashMap(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 標記法時使用的建構函式;由執行時間呼叫。

屬性

Class

傳回這個 Object 的執行時間類別。

(繼承來源 Object)
Handle

基礎 Android 實例的控制碼。

(繼承來源 Object)
IsEmpty

要新增

(繼承來源 AbstractMap)
JniIdentityHashCode

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)
JniPeerMembers

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

PeerReference

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)
ThresholdClass

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

ThresholdType

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

方法

Clear()

要新增

(繼承來源 AbstractMap)
Clone()

建立並傳回這個 物件的複本。

(繼承來源 Object)
ContainsKey(Object)

要新增

(繼承來源 AbstractMap)
ContainsValue(Object)

要新增

(繼承來源 AbstractMap)
Dispose()

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)
Dispose(Boolean)

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)
EntrySet()

Set 回此對應中包含的對應檢視。

Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
ForEach(IBiConsumer)

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

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)

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
Size()

要新增

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

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)
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()

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

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

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

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

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

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

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

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

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

GetJniTypeName(IJavaPeerable)

介面的雜湊表實作 Map ,具有 < em > 弱式索引鍵 < /em > 。

適用於