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>:如果在建立反覆運算器之後隨時以結構化方式修改 Hashtable, remove
則反覆運算器會擲回 ConcurrentModificationException
。 因此,面對並行修改,反覆運算器會快速且乾淨地失敗,而不是在未來不確定的時間冒著任意、不具決定性的行為的風險。 Hashtable 的 #keys keys
和 #elements elements
方法><所傳回的列舉不是</em> 失敗快速;如果在建立列舉之後隨時以結構化方式修改 Hashtable,則列舉的結果會未定義。
請注意,Iterator 的失敗快速行為無法保證,一般來說,不可能在未同步處理並行修改的情況下進行任何硬式保證。 快速反覆運算器會盡最大努力擲回 ConcurrentModificationException
。 因此,撰寫依賴此例外狀況的程序正確性是錯誤的: Iterator 的失敗快速行為應該只用來偵測 Bug。
從 Java 2 平臺 v1.2 開始,此類別已進行改造以實 Map
作 介面,使其成為 的成員。
Java Collections Framework。 與新的集合實作不同, Hashtable
會同步處理。 如果不需要安全線程實作,建議使用 HashMap
來取代 Hashtable
。 如果需要安全線程高度並行實作,建議使用 java.util.concurrent.ConcurrentHashMap
來取代 Hashtable
。
已在1.0中新增。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
建構函式
Hashtable() |
建構具有預設初始容量 (11) 和負載因數 (0) 的新空白哈希表。 |
Hashtable(IDictionary) |
使用與指定對應相同的對應來建構新的哈希表。 |
Hashtable(Int32) |
使用指定的初始容量和預設負載因數 (0) 建構新的空白哈希表。 |
Hashtable(Int32, Single) |
使用指定的初始容量和指定的負載因數,建構新的空白哈希表。 |
Hashtable(IntPtr, JniHandleOwnership) |
建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。 |
屬性
Class |
傳回這個 |
Handle |
基礎Android實例的句柄。 (繼承來源 Object) |
IsEmpty |
測試此哈希表是否會將索引鍵對應至值。 |
JniIdentityHashCode |
這個類別會實作哈希表,此哈希表會將索引鍵對應至值。 (繼承來源 Object) |
JniPeerMembers |
這個類別會實作哈希表,此哈希表會將索引鍵對應至值。 |
PeerReference |
這個類別會實作哈希表,此哈希表會將索引鍵對應至值。 (繼承來源 Object) |
ThresholdClass |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
ThresholdType |
此 API 支援適用於 Android 的 Mono 基礎結構,並不適合直接從您的程式代碼使用。 |
方法
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 <notified/em>或<em>interrupted</em> 來喚醒它。<> (繼承來源 Object) |
Wait(Int64) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。 (繼承來源 Object) |
Wait(Int64, Int32) |
讓目前的線程等到喚醒為止,通常是因為 <em>notified</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) |
這個類別會實作哈希表,此哈希表會將索引鍵對應至值。 |