Hashtable 类

定义

此类实现哈希表,该哈希表将键映射到值。

[Android.Runtime.Register("java/util/Hashtable", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class Hashtable : Java.Util.Dictionary, IDisposable, Java.Interop.IJavaPeerable, Java.IO.ISerializable, Java.Lang.ICloneable, Java.Util.IMap
[<Android.Runtime.Register("java/util/Hashtable", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type Hashtable = class
    inherit Dictionary
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface IMap
继承
属性
实现

注解

此类实现哈希表,该哈希表将键映射到值。 任何非null 对象都可以用作键或值。

若要从哈希表成功存储和检索对象,用作键的对象必须实现 hashCode 方法和 equals 方法。

实例 Hashtable 有两个影响其性能的参数: 初始容量负载因子容量是哈希表中的存储桶数,初始容量只是创建哈希表时的容量。 请注意,哈希表处于 打开状态:在发生“哈希冲突”时,单个存储桶存储多个条目,必须按顺序搜索这些条目。 负载因子衡量哈希表在自动增加其容量之前允许其获取的满度。 初始容量和负载因子参数只是实现的提示。 有关何时以及是否调用 rehash 方法的确切详细信息取决于实现。

通常,默认负载因子 (.75) 在时间和空间成本之间提供很好的权衡。 较高的值会减少空间开销,但会增加查找条目 (的时间成本,这反映在大多数 Hashtable 操作(包括 getput) ) 中。

初始容量控制浪费空间与操作需求 rehash 之间的权衡,这很耗时。 如果初始容量大于 将包含的最大条目Hashtable数除以其负载因子,则不会发生任何rehash操作。 但是,将初始容量设置为过高可能会浪费空间。

如果要将许多条目制成 , Hashtable则创建具有足够大容量的条目可以更有效地插入条目,而不是让它根据需要执行自动重排以增加表。

此示例创建数字的哈希表。 它使用数字的名称作为键:

{@code
              Hashtable<String, Integer> numbers
                = new Hashtable<String, Integer>();
              numbers.put("one", 1);
              numbers.put("two", 2);
              numbers.put("three", 3);}

若要检索数字,请使用以下代码:

{@code
              Integer n = numbers.get("two");
              if (n != null) {
                System.out.println("two = " + n);
              }}

iterator 此类的所有“集合视图方法”返回的集合的 方法返回的迭代器为 <em>fail-fast</em>:如果在创建迭代器后随时对哈希表进行结构修改(除了通过迭代器自己的 remove 方法之外的任何方式),则迭代器将引发 ConcurrentModificationException。 因此,面对并发修改,迭代器会快速且干净地失败,而不会在将来不确定的时间冒着任意、非确定性行为的风险。 Hashtable 的 和 方法返回的#keys keys枚举不是<<>/不>快速的;如果在创建枚举后随时对哈希表进行结构修改,则枚举结果未定义。#elements elements

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

从 Java 2 平台 v1.2 开始,此类进行了改造以实现 Map 接口,使其成为 的成员

Java 集合框架。 与新的集合实现不同, Hashtable 是同步的。 如果不需要线程安全实现,建议使用 HashMap 代替 Hashtable。 如果需要线程安全高并发实现,则建议使用 java.util.concurrent.ConcurrentHashMap 代替 Hashtable

在 1.0 中添加。

java.util.HashtableJava 文档。

此页面的部分内容是基于 创建和共享的工作进行的修改,并根据 署名许可中所述的术语使用。

构造函数

Hashtable()

构造一个新的空哈希表,其默认初始容量 (11) ,负载因子 (0。

Hashtable(IDictionary)

使用与给定映射相同的映射构造新的哈希表。

Hashtable(Int32)

构造具有指定初始容量和默认负载因子 (0 的新空哈希表。

Hashtable(Int32, Single)

使用指定的初始容量和指定的负载因子构造新的空哈希表。

Hashtable(IntPtr, JniHandleOwnership)

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

属性

Class

返回此 Object的运行时类。

(继承自 Object)
Handle

基础 Android 实例的句柄。

(继承自 Object)
IsEmpty

测试此哈希表是否不将任何键映射到值。

JniIdentityHashCode

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
JniPeerMembers

此类实现哈希表,该哈希表将键映射到值。

PeerReference

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
ThresholdClass

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

ThresholdType

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

方法

Clear()

清除此哈希表,使其不包含任何键。

Clone()

创建此哈希表的浅表副本。

Compute(Object, IBiFunction)

要添加

ComputeIfAbsent(Object, IFunction)

要添加

ComputeIfPresent(Object, IBiFunction)

要添加

Contains(Object)

测试某些键是否映射到此哈希表中的指定值。

ContainsKey(Object)

测试指定的对象是否为此哈希表中的键。

ContainsValue(Object)

如果此哈希表将一个或多个键映射到此值,则返回 true。

Dispose()

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
Dispose(Boolean)

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
Elements()

返回此哈希表中值的枚举。

EntrySet()

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

Equals(Object)

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

(继承自 Object)
ForEach(IBiConsumer)

此类实现哈希表,该哈希表将键映射到值。

Get(Object)

返回指定键映射到的值,或者 null 如果此映射不包含键的映射,则返回值。

GetHashCode()

返回对象的哈希代码值。

(继承自 Object)
GetOrDefault(Object, Object)

此类实现哈希表,该哈希表将键映射到值。

JavaFinalize()

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

(继承自 Object)
Keys()

返回此哈希表中键的枚举。

KeySet()

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

Merge(Object, Object, IBiFunction)

要添加

Notify()

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

(继承自 Object)
NotifyAll()

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

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

将指定的 key 映射到此哈希表中指定的 value

PutAll(IDictionary)

将所有映射从指定映射复制到此哈希表。

PutIfAbsent(Object, Object)

此类实现哈希表,该哈希表将键映射到值。

Rehash()

增加此哈希表的容量,并在内部重新组织此哈希表,以便更有效地适应和访问其条目。

Remove(Object)

从此哈希表中删除键 (及其相应的值) 。

Remove(Object, Object)

从此哈希表中删除键 (及其相应的值) 。

Replace(Object, Object)

此类实现哈希表,该哈希表将键映射到值。

Replace(Object, Object, Object)

此类实现哈希表,该哈希表将键映射到值。

ReplaceAll(IBiFunction)

此类实现哈希表,该哈希表将键映射到值。

SetHandle(IntPtr, JniHandleOwnership)

设置 Handle 属性。

(继承自 Object)
Size()

返回此哈希表中的键数。

ToArray<T>()

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
ToString()

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

(继承自 Object)
UnregisterFromRuntime()

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
Values()

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

Wait()

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

(继承自 Object)
Wait(Int64)

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

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

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

(继承自 Object)

显式接口实现

IJavaPeerable.Disposed()

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
IJavaPeerable.DisposeUnlessReferenced()

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
IJavaPeerable.Finalized()

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)
IJavaPeerable.JniManagedPeerState

此类实现哈希表,该哈希表将键映射到值。

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

此类实现哈希表,该哈希表将键映射到值。

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

此类实现哈希表,该哈希表将键映射到值。

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

此类实现哈希表,该哈希表将键映射到值。

(继承自 Object)

扩展方法

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

此类实现哈希表,该哈希表将键映射到值。

GetJniTypeName(IJavaPeerable)

此类实现哈希表,该哈希表将键映射到值。

适用于