Hashtable 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
此类实现一个哈希表,该表将键映射到值。
[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
操作(包括 get
和 put
)中。
初始容量控制浪费的空间与操作需求 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.Hashtable
Java 文档
本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。
构造函数
Hashtable() |
构造具有默认初始容量(11)和负载因子(0)的新空哈希表。 |
Hashtable(IDictionary) |
使用与给定映射相同的映射构造新的哈希表。 |
Hashtable(Int32) |
使用指定的初始容量和默认负载因子(0)构造新的空哈希表。 |
Hashtable(Int32, Single) |
使用指定的初始容量和指定的负载因子构造新的空哈希表。 |
Hashtable(IntPtr, JniHandleOwnership) |
创建 JNI 对象的托管表示形式时使用的构造函数;由运行时调用。 |
属性
Class |
返回此 |
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() |
返回 |
Equals(Object) |
指示其他对象是否“等于”此对象。 (继承自 Object) |
ForEach(IBiConsumer) |
此类实现一个哈希表,该表将键映射到值。 |
Get(Object) |
返回指定键映射到的值,或者 |
GetHashCode() |
返回对象的哈希代码值。 (继承自 Object) |
GetOrDefault(Object, Object) |
此类实现一个哈希表,该表将键映射到值。 |
JavaFinalize() |
当垃圾回收确定不再引用该对象时,由对象上的垃圾回收器调用。 (继承自 Object) |
Keys() |
返回此哈希表中键的枚举。 |
KeySet() |
返回 |
Merge(Object, Object, IBiFunction) |
要添加 |
Notify() |
唤醒正在等待此对象的监视器的单个线程。 (继承自 Object) |
NotifyAll() |
唤醒正在等待此对象的监视器的所有线程。 (继承自 Object) |
Put(Object, Object) |
将指定的 |
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() |
返回 |
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) |
此类实现一个哈希表,该表将键映射到值。 |