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

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

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

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

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

<strong Implementation note:</strong The value objects in a WeakHashMap are held by commony strong>> 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

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

(继承自 Object)
JniPeerMembers

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

PeerReference

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

(继承自 Object)
ThresholdClass

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

ThresholdType

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

方法

名称 说明
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)
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)
Size()

要添加

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

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

(继承自 Object)
ToString()

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

(继承自 Object)
UnregisterFromRuntime()

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

(继承自 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>。

(继承自 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)

扩展方法

名称 说明
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端有效。

适用于