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 之间的权衡,这些操作非常耗时。 如果初始容量大于将包含的最大条目数除以其负载因子,则不会rehash发生任何操作Hashtable 但是,设置初始容量过高可能会浪费空间。

如果要将许多条目添加到某个 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。 因此,面对并发修改,迭代器会在将来不确定的时间快速、干净地失败,而不是冒着任意的不确定行为的风险。 哈希表返回的#keys keys枚举和#elements elements方法<>不是</em> 故障快速;如果在创建枚举后随时对哈希表进行结构修改,则枚举的结果是未定义的。

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

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

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

在 1.0 中添加。

适用于 . 的 java.util.HashtableJava 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

构造函数

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)

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

适用于