语言

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
[<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<初始容量>/em< 和 >em<负载因子>/em< 的>相同效率参数。

与大多数集合类一样,此类不会同步。 可以使用该方法WeakHashMap构造同步Collections#synchronizedMap Collections.synchronizedMap。

此类主要用于使用运算符测试对象标识equals的方法的关键对象==。 一旦放弃此类密钥,就永远无法重新创建它,因此不可能在一段时间后在该键中 WeakHashMap 查找该键,并惊讶地发现其条目已被删除。 此类非常适用于那些 equals 方法不基于对象标识(例如 String 实例)的关键对象。 但是,有了此类可重新创建的关键对象,自动删除 WeakHashMap 其键已被丢弃的条目可能会令人困惑。

类的行为 WeakHashMap 部分取决于垃圾回收器的操作,因此一些熟悉的(虽然不需要) Map 固定器不保留此类。 由于垃圾回收器可能随时放弃密钥,因此 WeakHashMap 可能的行为就像未知线程以无提示方式删除条目一样。 具体而言,即使你在实例上WeakHashMap同步并调用其任何互变量方法,方法也有可能size随时间推移返回较小的值,isEmpty然后返回该方法false,然后返回给定键,然后truecontainsKeytruefalse返回给定键get的方法,以便该方法返回一个值,但稍后返回。nullput用于返回null的方法和remove返回之前出现在地图中的键的方法false,以及键集的连续检查、值集合和条目集以生成连续较小的元素数。

中的每个 WeakHashMap 键对象间接存储为弱引用的引用。 因此,只有在地图内外的弱引用被垃圾回收器清除后,才会自动删除键。

<strong Implementation note:>/strong The value objects in a < are held by commony strong>WeakHashMap references. 因此,应注意确保值对象不会直接或间接地引用自己的键,因为这将阻止丢弃密钥。 请注意,值对象可以通过自身间接引用其键 WeakHashMap ;也就是说,值对象可能强指一些其他键对象,其关联的值对象反过来又强指第一个值对象的键。 如果映射中的值不依赖于对它们的强引用的映射,则处理此方法的一种方法是在插入之前包装值本身 WeakReferences ,如以下所示 m.put(key, new WeakReference(value)),然后对每个 get值进行解包。

由 iterator 此类的所有“集合视图方法”返回的集合方法返回的迭代器都是 失败的:如果在创建迭代器后随时对映射进行结构修改, remove 则迭代器将引发一个 ConcurrentModificationException。 因此,面对并发修改,迭代器会在将来不确定的时间快速、干净地失败,而不是冒着任意的不确定行为的风险。

请注意,迭代器的故障快速行为无法保证,一般来说,在出现非同步并发修改时,无法做出任何硬保证。 故障快速迭代器会尽力引发 ConcurrentModificationException 。 因此,编写依赖于此异常的程序的正确性是错误的:迭代 器的故障快速行为应仅用于检测 bug。

此类是 Java Collections Framework 的成员。

已在 1.2 中添加。

Java文档java.util.WeakHashMap。

本页的某些部分是根据 创建和共享的工作进行的修改,并根据 许可证中所述的条款使用。

构造函数

名称 说明
WeakHashMap()

构造具有默认初始容量(16)和负载因子(0)的新空 WeakHashMap 。

WeakHashMap(IDictionary)

使用与指定映射相同的映射构造一个新 WeakHashMap 映射。

WeakHashMap(Int32, Single)

使用给定的初始容量和给定的负载因子构造一个新的空 WeakHashMap 。

WeakHashMap(Int32)

使用给定的初始容量和默认负载因子(0)构造一个新的空 WeakHashMap 值。

WeakHashMap(IntPtr, JniHandleOwnership)

创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。

属性

名称 说明
Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsEmpty

要添加

(继承自 AbstractMap)
JniIdentityHashCode

获取互操作运行时分配给此Java对等的标识哈希代码。

(继承自 Object)
JniManagedPeerState

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
JniPeerMembers

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

PeerReference

获取此Java对等方的 JNI 对象引用。

(继承自 Object)
ThresholdClass

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

ThresholdType

此 API 支持 Mono for Android 基础结构,不打算直接从代码使用。

方法

名称 说明
Clear()

要添加

(继承自 AbstractMap)
Clone()

创建并返回此对象的副本。

(继承自 Object)
Construct(JniObjectReference, JniObjectReferenceOptions)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
ContainsKey(Object)

要添加

(继承自 AbstractMap)
ContainsValue(Object)

要添加

(继承自 AbstractMap)
Dispose()

释放此Java对等方持有的资源。

(继承自 Object)
Dispose(Boolean)

释放此Java对等方持有的资源。

(继承自 Object)
DisposeUnlessReferenced()

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
EntrySet()

返回 Set 此映射中包含的映射的视图。

Equals(Object)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
Equals(Object)

指示其他对象是否“等于”此对象。

(继承自 Object)
ForEach(IBiConsumer)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

Get(Object)

要添加

(继承自 AbstractMap)
GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
JavaFinalize()
已过时.

当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。

(继承自 Object)
KeySet()

要添加

(继承自 AbstractMap)
NewWeakHashMap(Int32)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

Notify()

唤醒正在等待此对象的监视器的单个线程。

(继承自 Object)
NotifyAll()

唤醒正在等待此对象的监视器的所有线程。

(继承自 Object)
Put(Object, Object)

要添加

(继承自 AbstractMap)
PutAll(IDictionary)

要添加

(继承自 AbstractMap)
Remove(Object)

要添加

(继承自 AbstractMap)
ReplaceAll(IBiFunction)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
Size()

要添加

(继承自 AbstractMap)
ToArray<T>()

从此Java数组包装器创建托管数组。

(继承自 Object)
ToString()

返回对象的字符串表示形式。

(继承自 Object)
UnregisterFromRuntime()

从互操作运行时取消注册此Java对等。

(继承自 Object)
Values()

要添加

(继承自 AbstractMap)
Wait()

使当前线程等待,直到唤醒它,通常是通过 em 通知/em< 或 >em<interrupted>/em<。><>

(继承自 Object)
Wait(Int64, Int32)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)
Wait(Int64)

使当前线程等待直到唤醒,通常是通过 <em>通知</em> 或 <em interrupted>/em<>,或直到经过一定数量的实时。

(继承自 Object)

显式接口实现

名称 说明
IJavaPeerable.Disposed()

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
IJavaPeerable.Finalized()

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

(继承自 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

扩展方法

名称 说明
GetJniTypeName(IJavaPeerable)

获取实例 self类型的 JNI 名称。

JavaAs<TResult>(IJavaPeerable)

尝试强制self键入TResult,检查强制是否在Java端有效。

JavaCast<TResult>(IJavaObject)

执行 Android 运行时检查的类型转换。

JavaCast<TResult>(IJavaObject)

基于接口的 Map 哈希表实现,其中 <em>弱键</em>。

TryJavaCast<TResult>(IJavaPeerable, TResult)

尝试强制self键入TResult,检查强制是否在Java端有效。

适用于