語言

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.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 實例有兩個參數會影響其效能: 初始容量 與 負載因子。 容量是雜湊表中桶的數量,初始容量則是雜湊表建立時的容量。 請注意,雜湊表是 開放的:在「雜湊碰撞」的情況下,一個桶儲存多個條目,必須依序搜尋。 負載因子是衡量雜湊表容量自動增加前被允許填滿的程度。 初始容量與負載因數參數僅為實作的提示。 關於何時以及是否會呼叫重排方法的具體細節,則依實作而異。

一般來說,預設的負載因子(0.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。 因此,面對並行修改時,迭代器能迅速且乾淨地失敗,而非冒著未來某個未知時間出現任意且非確定性行為的風險。 Hashtable #keys keys 與 #elements elements 方法回傳的列舉為 <em>not</em> fail-fast;若在列舉建立後任何時間結構修改過,則列舉結果未定義。

請注意,迭代器的失效快速行為無法保證,因為一般而言,在存在非同步的並行修改時,無法做出任何硬性保證。 失效快速迭代器則是以盡力而為的方式投擲 ConcurrentModificationException 。 因此,撰寫依賴此例外來確保正確性的程式是錯誤的: 迭代器的快速失效行為應該只用來偵測錯誤。

自 Java 2 平台 v1.2 起,此類別被後改以實作介面Map,使其成為

Java 集合框架。 與新的集合實作不同, Hashtable 它是同步的。 若不需要執行緒安全實作,建議以 HashMapHashtable取代 。 若希望實現執行緒安全的高度並行實作,建議使用 java.util.concurrent.ConcurrentHashMapHashtable。

1.0 版本新增。

的 java.util.HashtableJava 檔。

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

建構函式

名稱 Description
Hashtable()

建立一個新的空白雜湊表,預設初始容量為 11,負載因子為 0。

Hashtable(IDictionary)

建立一個與該映射相同的新雜湊表。

Hashtable(Int32, Single)

建立一個新的空雜湊表,包含指定的初始容量與負載因子。

Hashtable(Int32)

建構一個新的空白雜湊表,包含指定的初始容量與預設負載因子(0.

Hashtable(IntPtr, JniHandleOwnership)

用於建立 JNI 物件受管理表示的建構器;由執行時呼叫。

屬性

名稱 Description
Class

回傳此 Object的執行時類別。

(繼承來源 Object)
Handle

底層 Android 實例的帳號。

(繼承來源 Object)
IsEmpty

測試這個雜湊表是否將任何鍵對應到值。

JniIdentityHashCode

取得由互通執行時指派給此 Java 對等端的身份雜湊碼。

(繼承來源 Object)
JniManagedPeerState

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
JniPeerMembers

此類別實作一個雜湊表,將鍵值映射為值。

PeerReference

取得這個 Java 節點的 JNI 物件參考。

(繼承來源 Object)
ThresholdClass

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

ThresholdType

此 API 支援 Mono for Android 基礎架構,並非直接從你的程式碼中使用。

方法

名稱 Description
Clear()

清除此雜湊表,使其不包含鍵。

Clone()

建立這個雜湊表的淺層副本。

Compute(Object, IBiFunction)

待補充

ComputeIfAbsent(Object, IFunction)

待補充

ComputeIfPresent(Object, IBiFunction)

待補充

Construct(JniObjectReference, JniObjectReferenceOptions)

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
Contains(Object)

測試某些鍵是否映射到此雜湊表中指定的值。

ContainsKey(Object)

測試指定的物件是否是此雜湊表中的金鑰。

ContainsValue(Object)

若此雜湊表將一個或多個鍵對應到該值,則回傳為真。

Dispose()

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
Dispose(Boolean)

釋放該 Java 節點所持有的資源。

(繼承來源 Object)
DisposeUnlessReferenced()

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
Elements()

回傳此雜湊表中數值的枚舉。

EntrySet()

回傳 Set 此地圖中所包含映射的視圖。

Equals(Object)

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
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, Object)

從雜湊表中移除金鑰(及其對應值)。

Remove(Object)

從雜湊表中移除金鑰(及其對應值)。

Replace(Object, Object, Object)

此類別實作一個雜湊表,將鍵值映射為值。

Replace(Object, Object)

此類別實作一個雜湊表,將鍵值映射為值。

ReplaceAll(IBiFunction)

此類別實作一個雜湊表,將鍵值映射為值。

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
SetPeerReference(JniObjectReference, JniObjectReferenceOptions)

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
Size()

回傳此雜湊表中的金鑰數量。

ToArray<T>()

從這個 Java 陣列包裝器建立一個受管理陣列。

(繼承來源 Object)
ToString()

回傳物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

將此 Java 節點從互通執行時中取消註冊。

(繼承來源 Object)
Values()

回傳 Collection 此映射中所含值的視圖。

Wait()

導致目前執行緒等待被喚醒,通常是透過 <em>通知</><em 或 em>中斷</em> 來喚醒。

(繼承來源 Object)
Wait(Int64, Int32)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)
Wait(Int64)

會讓目前執行緒等待喚醒,通常是透過 <em>通知</><em 或 em>中斷</em>,或是經過一定的真實時間。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
IJavaPeerable.Finalized()

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
IJavaPeerable.SetJniIdentityHashCode(Int32)

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
IJavaPeerable.SetPeerReference(JniObjectReference)

此類別實作一個雜湊表,將鍵值映射為值。

(繼承來源 JavaObject)
IJavaPeerable.UnregisterFromRuntime()

此類別實作一個雜湊表,將鍵值映射為值。

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

取得實例 self類型的 JNI 名稱。

JavaAs<TResult>(IJavaPeerable)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

JavaCast<TResult>(IJavaObject)

執行 Android 執行時檢查型別轉換。

JavaCast<TResult>(IJavaObject)

此類別實作一個雜湊表,將鍵值映射為值。

TryJavaCast<TResult>(IJavaPeerable, TResult)

試著強制self輸入 TResult,檢查 強制在 Java 端是否有效。

適用於