語言

HashMap 類別

定義

介面的實作是基於雜湊表的。Map

[Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class HashMap : Java.Util.AbstractMap, IDisposable, Java.IO.ISerializable, Java.Lang.ICloneable
[<Android.Runtime.Register("java/util/HashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type HashMap = class
    inherit AbstractMap
    interface ISerializable
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
    interface ICloneable
    interface IMap
繼承
衍生
屬性
實作

備註

介面的實作是基於雜湊表的。Map 此實作提供所有可選的映射操作,並允許值null與鍵值。null (該 HashMap 類大致等價 Hashtable於 ,但不同步且允許零點。)此類別不保證地圖的順序;特別是,它並不保證該階數會隨時間保持不變。

此實作為基本運算getput( 和 )提供恆定時間效能,前提是雜湊函數能妥善分配元素於桶間。 對集合檢視的迭代時間與實例的「容量」( HashMap 桶數)加上大小(鍵值映射數)成正比。 因此,若迭代效能重要,極不應該將初始容量設定過高(或負載因子過低)。

一個 HashMap 實例有兩個參數會影響其效能: 初始容量負載因子容量是雜湊表中桶的數量,初始容量則是雜湊表建立時的容量。 負載因子是衡量雜湊表容量自動增加前被允許填滿的程度。 當雜湊表中的條目數超過負載因子與當前容量的乘積時,雜湊表會被 重雜湊 (即重建內部資料結構),使雜湊表的桶數約為兩倍。

一般來說,預設的負載因子(0.75)在時間與空間成本之間提供了良好的平衡。 較高的值會減少空間開銷,但增加查找成本(反映在類別的大多數操作 HashMap 中,包括 getput)。 設定初始容量時應考慮地圖中預期的條目數及其負載因子,以減少重排運算次數。 若初始容量超過最大條目數除以負載因子,則不會發生任何重排運算。

若多個映射要儲存在一個 HashMap 實例中,建立足夠大容量的實例,能讓映射比讓它在需要時自動重排以擴充資料表更有效率。 請注意,使用多個相同 hashCode() 金鑰會肯定會拖慢雜湊表的效能。 為了減輕影響,當鍵數為 Comparable時,此類別可能會使用鍵之間的比較順序來幫助打破平手。

<強>請注意,此實作並非同步。</強> 如果多個執行緒同時存取雜湊映射,且至少有一個執行緒結構性修改了映射, 則必須 在外部同步。 (結構修改是指任何新增或刪除一個或多個映射的操作;僅僅改變實例已包含的鍵值,並不構成結構性修改。)這通常是透過在自然封裝地圖的物件上同步來達成。

若不存在此類物件,則應使用該 Collections#synchronizedMap Collections.synchronizedMap 方法「包裹」映射。 這最好在建立時進行,以避免不同步地存取地圖:

Map m = Collections.synchronizedMap(new HashMap(...));

此類別所有「集合檢視方法」回傳的迭代器皆為 失敗快速:若在迭代器建立後的任何時間對映射進行結構修改,且非透過迭代器自身 remove 的方法,迭代器將拋出 ConcurrentModificationException。 因此,面對並行修改時,迭代器能迅速且乾淨地失敗,而非冒著未來某個未知時間出現任意且非確定性行為的風險。

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

此類別是 Java 集合框架的成員。

在 1.2 版本中加入。

java.util.HashMapJava 檔。

此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。

建構函式

名稱 Description
HashMap()

以預設初始容量(16)和預設負載因子(0)構建空置。HashMap

HashMap(IDictionary)

構造一個與指定HashMap映射相同的新 Map

HashMap(Int32, Single)

構造一個具有指定初始容量與負載因子的空槽 HashMap

HashMap(Int32)

構造一個具有指定初始容量且預設負載因子為 0 的空位。HashMap

HashMap(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 表示法時使用的建構函式;由運行時間呼叫。

屬性

名稱 Description
Class

傳回這個 Object的運行時間類別。

(繼承來源 Object)
Handle

基礎Android實例的句柄。

(繼承來源 Object)
IsEmpty

待補充

(繼承來源 AbstractMap)
JniIdentityHashCode

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

(繼承來源 Object)
JniManagedPeerState

介面的實作是基於雜湊表的。Map

(繼承來源 JavaObject)
JniPeerMembers

介面的實作是基於雜湊表的。Map

PeerReference

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

(繼承來源 Object)
ThresholdClass

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

ThresholdType

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

方法

名稱 Description
Clear()

待補充

(繼承來源 AbstractMap)
Clone()

回傳此 HashMap 實例的淺層副本:鍵與值本身未被複製。

Compute(Object, IBiFunction)

介面的實作是基於雜湊表的。Map

ComputeIfAbsent(Object, IFunction)

介面的實作是基於雜湊表的。Map

ComputeIfPresent(Object, IBiFunction)

介面的實作是基於雜湊表的。Map

Construct(JniObjectReference, JniObjectReferenceOptions)

介面的實作是基於雜湊表的。Map

(繼承來源 JavaObject)
ContainsKey(Object)

待補充

(繼承來源 AbstractMap)
ContainsValue(Object)

待補充

(繼承來源 AbstractMap)
Dispose()

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

(繼承來源 Object)
Dispose(Boolean)

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

(繼承來源 Object)
DisposeUnlessReferenced()

介面的實作是基於雜湊表的。Map

(繼承來源 JavaObject)
EntrySet()

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

Equals(Object)

介面的實作是基於雜湊表的。Map

(繼承來源 JavaObject)
Equals(Object)

指出其他物件是否「等於」這個物件。

(繼承來源 Object)
ForEach(IBiConsumer)

介面的實作是基於雜湊表的。Map

Get(Object)

待補充

(繼承來源 AbstractMap)
GetHashCode()

傳回此物件的雜湊碼值。

(繼承來源 Object)
GetOrDefault(Object, Object)

介面的實作是基於雜湊表的。Map

JavaFinalize()
已淘汰.

當垃圾收集決定不再參考物件時,垃圾收集行程在 物件上呼叫。

(繼承來源 Object)
KeySet()

待補充

(繼承來源 AbstractMap)
Merge(Object, Object, IBiFunction)

介面的實作是基於雜湊表的。Map

NewHashMap(Int32)

介面的實作是基於雜湊表的。Map

Notify()

喚醒正在等候此物件監視器的單一線程。

(繼承來源 Object)
NotifyAll()

喚醒正在等候此物件監視器的所有線程。

(繼承來源 Object)
Put(Object, Object)

待補充

(繼承來源 AbstractMap)
PutAll(IDictionary)

待補充

(繼承來源 AbstractMap)
PutIfAbsent(Object, Object)

介面的實作是基於雜湊表的。Map

Remove(Object, Object)

若有指定鍵的映射,則移除該映射。

Remove(Object)

待補充

(繼承來源 AbstractMap)
Replace(Object, Object, Object)

介面的實作是基於雜湊表的。Map

Replace(Object, Object)

介面的實作是基於雜湊表的。Map

ReplaceAll(IBiFunction)

介面的實作是基於雜湊表的。Map

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

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

介面的實作是基於雜湊表的。Map

(繼承來源 JavaObject)
Size()

待補充

(繼承來源 AbstractMap)
ToArray<T>()

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

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

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

(繼承來源 Object)
Values()

待補充

(繼承來源 AbstractMap)
Wait()

讓目前線程等候直到喚醒為止,通常是藉由em <notified/em>或<em>interrupted</em> 來喚醒它。<>

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

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)
Wait(Int64)

讓目前的線程等到喚醒為止,通常是因為 <em>notified</em> 或 <em>interrupted</em>,或直到經過一定數量的實時為止。

(繼承來源 Object)

明確介面實作

名稱 Description
IJavaPeerable.Disposed()

介面的實作是基於雜湊表的。Map

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

介面的實作是基於雜湊表的。Map

(繼承來源 JavaObject)
IJavaPeerable.JniObjectReferenceControlBlock

介面的實作是基於雜湊表的。Map

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

介面的實作是基於雜湊表的。Map

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

介面的實作是基於雜湊表的。Map

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

介面的實作是基於雜湊表的。Map

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

介面的實作是基於雜湊表的。Map

擴充方法

名稱 Description
GetJniTypeName(IJavaPeerable)

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

JavaAs<TResult>(IJavaPeerable)

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

JavaCast<TResult>(IJavaObject)

執行 Android 執行時間檢查的類型轉換。

JavaCast<TResult>(IJavaObject)

介面的實作是基於雜湊表的。Map

TryJavaCast<TResult>(IJavaPeerable, TResult)

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

適用於