Share via


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.Interop.IJavaPeerable, 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 ,不同之處在于它未同步,而且允許 nulls.) 此類別不保證對應的順序;特別是,它不保證順序會隨著時間維持不變。

此實作提供基本作業 (getput) 的常數時間效能,假設雜湊函式會在貯體之間適當分散元素。 集合檢視的反復專案需要時間與實例的 HashMap 「容量」成正比, (值區數目) 加上其大小 (索引鍵/值對應數目) 。 因此,如果反復專案效能很重要,請務必不要將初始容量設定為太高 (或負載因數太低) 。

HashMap 實例有兩個會影響其效能的參數: 初始容量負載因數容量是雜湊表中的貯體數目,而初始容量只是建立雜湊表時的容量。 負載因數是一種量值,可測量如何讓雜湊表在容量自動增加之前取得完整。 當雜湊表中的專案數目超過負載因數和目前容量的乘積時,雜湊表會 重新壓縮 (也就是說,內部資料結構會重建) ,讓雜湊表大約有兩倍的貯體數目。

一般規則是預設載入因數 (.75) 提供時間與空間成本之間的良好取捨。 較高的值會降低空間額外負荷,但增加查閱成本 (反映在類別的大部分作業 HashMap 中,包括 getput) 。 設定其初始容量時,應該考慮對應中的預期專案數目及其負載因數,以便將重新套用作業的數目降到最低。 如果初始容量大於除以負載因數的最大專案數目,則不會發生任何重新雜湊作業。

如果要將許多對應儲存在實例中 HashMap ,建立具有足夠容量的對應將會讓對應更有效率地儲存,而不是讓它視需要執行自動重新雜湊來增加資料表。 請注意,使用許多具有相同索引 hashCode() 鍵的,是降低任何雜湊表效能的一個確定方式。 為了改善影響,當索引鍵為 Comparable 時,此類別可能會使用索引鍵之間的比較順序來協助中斷系結。

<強 > 請注意,此實作不會同步處理。 </strong > 如果多個執行緒同時存取雜湊對應,而且至少有一個執行緒以結構化方式修改對應, 則必須 在外部同步處理。 (結構修改是新增或刪除一或多個對應的任何作業;只變更與實例已包含之索引鍵相關聯的值不是結構化修改。) 這通常是藉由在自然封裝對應的某些物件上進行同步處理來完成。

如果不存在這類物件,則對應應該使用 Collections#synchronizedMap Collections.synchronizedMap 方法「包裝」。 在建立時最好這麼做,以避免意外對地圖進行未同步處理的存取:

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

這個類別的所有「集合檢視方法」所傳回的反覆運算器都會 失敗快速:如果在建立反覆運算器之後隨時以結構方式修改地圖,除了透過反覆運算器自己的 remove 方法以外,反覆運算器會擲回 ConcurrentModificationException 。 因此,在同時修改時,反覆運算器會快速且清楚地失敗,而不是在未來不具決定性的不具決定性行為上風險。

請注意,反覆運算器的失敗快速行為無法保證,一般而言,不可能在未同步處理並行修改的情況下進行任何硬式保證。 以最佳方式擲回 ConcurrentModificationException 快速反覆運算器。 因此,撰寫相依于此例外狀況的程式是否正確性是錯誤的: 反覆運算器的失敗快速行為應該只用來偵測錯誤。

這個類別是 JAVA Collections Framework的成員。

已在 1.2 中新增。

java.util.HashMap JAVA 檔。

此頁面的部分是根據所建立和共用的工作進行修改,並根據 2.5 屬性授權中所述的詞彙來使用。

建構函式

HashMap()

使用預設初始容量 (16) 和預設載入因數 (0 建構空 HashMap 的 。

HashMap(IDictionary)

使用與指定 Map 相同的對應來建構新的 HashMap

HashMap(Int32)

使用指定的初始容量和預設負載因數建構空 HashMap 的 (0。

HashMap(Int32, Single)

使用指定的初始容量和負載因數建構空 HashMap 的 。

HashMap(IntPtr, JniHandleOwnership)

建立 JNI 物件的 Managed 標記法時使用的建構函式;由執行時間呼叫。

屬性

Class

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

(繼承來源 Object)
Handle

基礎 Android 實例的控制碼。

(繼承來源 Object)
IsEmpty

要新增

(繼承來源 AbstractMap)
JniIdentityHashCode

介面的雜湊表實作 Map

(繼承來源 Object)
JniPeerMembers

介面的雜湊表實作 Map

PeerReference

介面的雜湊表實作 Map

(繼承來源 Object)
ThresholdClass

此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。

ThresholdType

此 API 支援適用于 Android 的 Mono 基礎結構,並不適合直接從您的程式碼使用。

方法

Clear()

要新增

(繼承來源 AbstractMap)
Clone()

傳回這個 HashMap 實例的淺層複本:不會複製索引鍵和值本身。

Compute(Object, IBiFunction)

介面的雜湊表實作 Map

ComputeIfAbsent(Object, IFunction)

介面的雜湊表實作 Map

ComputeIfPresent(Object, IBiFunction)

介面的雜湊表實作 Map

ContainsKey(Object)

要新增

(繼承來源 AbstractMap)
ContainsValue(Object)

要新增

(繼承來源 AbstractMap)
Dispose()

介面的雜湊表實作 Map

(繼承來源 Object)
Dispose(Boolean)

介面的雜湊表實作 Map

(繼承來源 Object)
EntrySet()

Set 回此對應中包含的對應檢視。

Equals(Object)

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

(繼承來源 Object)
ForEach(IBiConsumer)

介面的雜湊表實作 Map

Get(Object)

要新增

(繼承來源 AbstractMap)
GetHashCode()

傳回此物件的雜湊碼值。

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

介面的雜湊表實作 Map

JavaFinalize()

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

(繼承來源 Object)
KeySet()

要新增

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

介面的雜湊表實作 Map

Notify()

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

(繼承來源 Object)
NotifyAll()

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

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

要新增

(繼承來源 AbstractMap)
PutAll(IDictionary)

要新增

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

介面的雜湊表實作 Map

Remove(Object)

要新增

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

如果存在,則會從這個對應中移除指定索引鍵的對應。

Replace(Object, Object)

介面的雜湊表實作 Map

Replace(Object, Object, Object)

介面的雜湊表實作 Map

ReplaceAll(IBiFunction)

介面的雜湊表實作 Map

SetHandle(IntPtr, JniHandleOwnership)

設定 Handle 屬性。

(繼承來源 Object)
Size()

要新增

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

介面的雜湊表實作 Map

(繼承來源 Object)
ToString()

傳回物件的字串表示。

(繼承來源 Object)
UnregisterFromRuntime()

介面的雜湊表實作 Map

(繼承來源 Object)
Values()

要新增

(繼承來源 AbstractMap)
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()

介面的雜湊表實作 Map

(繼承來源 Object)
IJavaPeerable.DisposeUnlessReferenced()

介面的雜湊表實作 Map

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

介面的雜湊表實作 Map

(繼承來源 Object)
IJavaPeerable.JniManagedPeerState

介面的雜湊表實作 Map

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

介面的雜湊表實作 Map

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

介面的雜湊表實作 Map

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

介面的雜湊表實作 Map

(繼承來源 Object)

擴充方法

JavaCast<TResult>(IJavaObject)

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

JavaCast<TResult>(IJavaObject)

介面的雜湊表實作 Map

GetJniTypeName(IJavaPeerable)

介面的雜湊表實作 Map

適用於