Hashtable 類表示根據鍵的哈希碼組織的鍵/值對的集合。此類位於 System.Collections 命名空間下。 Hashtable 類提供了各種類型的方法,用於對哈希表執行不同類型的操作。在哈希表中,鍵用於訪問集合中存在的元素。對於非常大的 Hashtable 對象,您可以在 64 位係統上將最大容量增加到 20 億個元素。
Hashtable類的特點:
- 在 Hashtable 中,key 不能為 null,但 value 可以。
- 在 Hashtable 中,鍵對象必須是不可變的,隻要它們用作 Hashtable 中的鍵即可。
- Hashtable 的容量是 Hashtable 可以容納的元素數量。
- 哈希表中的每個鍵對象都提供哈希函數。
Constructors
CONSTRUCTOR | DESCRIPTION |
---|---|
Hashtable() | 使用默認初始容量、加載因子、哈希代碼提供程序和比較器初始化 Hashtable 類的新空實例。 |
Hashtable(IDictionary) | 通過將指定字典中的元素複製到新的 Hashtable 對象來初始化 Hashtable 類的新實例。新的 Hashtable 對象的初始容量等於複製的元素數量,並使用默認的加載因子、哈希碼提供程序和比較器。 |
Hashtable(IDictionary, IEqualityComparer) | 通過將指定字典中的元素複製到新的 Hashtable 對象來初始化 Hashtable 類的新實例。新的 Hashtable 對象的初始容量等於複製的元素數,並使用默認加載因子和指定的 IEqualityComparer 對象。 |
Hashtable(IDictionary, IHashCodeProvider, IComparer) | 通過將指定字典中的元素複製到新的 Hashtable 對象來初始化 Hashtable 類的新實例。新的 Hashtable 對象的初始容量等於複製的元素數,並使用默認的加載因子以及指定的哈希碼提供程序和比較器。該 API 已過時。有關替代方案,請參閱 Hashtable(IDictionary, IEqualityComparer)。 |
Hashtable(IDictionary, Single) | 通過將指定字典中的元素複製到新的 Hashtable 對象來初始化 Hashtable 類的新實例。新的 Hashtable 對象的初始容量等於複製的元素數,並使用指定的加載因子以及默認的哈希代碼提供程序和比較器。 |
Hashtable(IDictionary, Single, IEqualityComparer) | 通過將指定字典中的元素複製到新的 Hashtable 對象來初始化 Hashtable 類的新實例。新的 Hashtable 對象的初始容量等於複製的元素數,並使用指定的加載因子和 IEqualityComparer 對象。 |
Hashtable(IDictionary, Single, IHashCodeProvider, IComparer) | 通過將指定字典中的元素複製到新的 Hashtable 對象來初始化 Hashtable 類的新實例。新的 Hashtable 對象的初始容量等於複製的元素數,並使用指定的加載因子、哈希碼提供程序和比較器。 |
Hashtable(IEqualityComparer) | 使用默認初始容量和負載因子以及指定的 IEqualityComparer 對象初始化 Hashtable 類的新空實例。 |
Hashtable(IHashCodeProvider, IComparer) | 使用默認初始容量和負載因子以及指定的哈希代碼提供程序和比較器初始化 Hashtable 類的新的空實例。 |
哈希表(Int32) | 使用指定的初始容量、默認加載因子、哈希代碼提供程序和比較器初始化 Hashtable 類的新的空實例。 |
哈希表(Int32,IEqualityComparer) | 使用指定的初始容量和 IEqualityComparer 以及默認加載因子初始化 Hashtable 類的新的空實例。 |
哈希表(Int32、IHashCodeProvider、IComparer) | 使用指定的初始容量、哈希代碼提供程序、比較器和默認加載因子初始化 Hashtable 類的新的空實例。 |
哈希表(Int32,單) | 使用指定的初始容量和負載因子以及默認的哈希代碼提供程序和比較器初始化 Hashtable 類的新的空實例。 |
哈希表(Int32、Single、IEqualityComparer) | 使用指定的初始容量、加載因子和 IEqualityComparer 對象初始化 Hashtable 類的新的空實例。 |
哈希表(Int32、Single、IHashCodeProvider、IComparer) | 使用指定的初始容量、加載因子、哈希代碼提供程序和比較器初始化 Hashtable 類的新的空實例。 |
Hashtable(SerializationInfo, StreamingContext) | 初始化 Hashtable 類的新的空實例,該實例可使用指定的 SerializationInfo 和 StreamingContext 對象進行序列化。 |
例子:
C#
// C# program to create Hashtable
using System;
using System.Collections;
class GFG {
// Main method
static void Main(string[] args)
{
// create and initialize Hash table
// using Add() method
Hashtable g = new Hashtable();
g.Add(1, "welcome");
g.Add(2, "to");
g.Add(3, "tutorials");
g.Add(4, "of");
g.Add(5, "C#");
ICollection key = g.Keys;
// Print Hash table
Console.WriteLine("Hashtable:");
Console.WriteLine();
foreach(var val in key)
{
Console.WriteLine(val + "-" + g[val]);
}
}
}
輸出:
Hashtable: 5-C# 4-of 3-tutorials 2-to 1-welcome
Properties
PROPERTY | DESCRIPTION |
---|---|
comparer | 獲取或設置用於 Hashtable 的 IComparer。 |
Count | 獲取 Hashtable 中包含的鍵/值對的數量。 |
EqualityComparer | 獲取用於 Hashtable 的 IEqualityComparer。 |
hcp | 獲取或設置可以分配哈希碼的對象。 |
IsFixedSize | 獲取一個值,該值指示 Hashtable 是否具有固定大小。 |
IsReadOnly | 獲取一個值,該值指示 Hashtable 是否為隻讀。 |
IsSynchronized | 獲取一個值,該值指示對 Hashtable 的訪問是否同步(線程安全)。 |
項目[對象] | 獲取或設置與指定鍵關聯的值。 |
Keys | 獲取包含 Hashtable 中的鍵的 ICollection。 |
SyncRoot | 獲取可用於同步對 Hashtable 的訪問的對象。 |
Values | 獲取包含 Hashtable 中的值的 ICollection。 |
例子:
C#
// C# Program to illustrate the
// Properties of Hashtable
using System;
using System.Collections;
class GFG {
// Main method
static void Main(string[] args)
{
// create and initialize Hash table
// using Add() method
Hashtable has1 = new Hashtable();
has1.Add("1", "Welcome");
has1.Add("2", "to");
has1.Add("3", "geeks");
has1.Add("4", "for");
has1.Add("5", "geeks");
// --------- Using IsSynchronized Property
// Creating a synchronized packing
// around the Hashtable
Hashtable has2 = Hashtable.Synchronized(has1);
// print the status of both Hashtables
Console.WriteLine("has1 Hashtable is {0}.",
has1.IsSynchronized ? "synchronized" :
"not synchronized");
Console.WriteLine("has2 Hashtable is {0}.",
has2.IsSynchronized ? "synchronized" :
"not synchronized");
// --------- Using Count Property
Console.WriteLine("Total Number of Elements in has1: "
+ has1.Count);
}
}
輸出:
has1 Hashtable is not synchronized. has2 Hashtable is synchronized. Total Number of Elements in has1: 5
Methods
METHOD | DESCRIPTION |
---|---|
Add(Object, Object) | 將具有指定鍵和值的元素添加到哈希表中。 |
Clear() | 從哈希表中刪除所有元素。 |
Clone() | 創建哈希表的淺拷貝。 |
Contains(Object) | 確定哈希表是否包含特定鍵。 |
ContainsKey(Object) | 確定哈希表是否包含特定鍵。 |
ContainsValue(Object) | 確定哈希表是否包含特定值。 |
複製到(數組,Int32) | 將 Hashtable 元素複製到指定索引處的一維 Array 實例。 |
Equals(Object) | 確定指定對象是否等於當前對象。 |
GetEnumerator() | 返回一個迭代 Hashtable 的 IDictionaryEnumerator。 |
GetHash(Object) | 返回指定鍵的哈希碼。 |
GetHashCode() | 用作默認的哈希函數。 |
GetObjectData(SerializationInfo, StreamingContext) | 實現 ISerialized 接口並返回序列化 Hashtable 所需的數據。 |
GetType() | 獲取當前實例的類型。 |
KeyEquals(Object, Object) | 將特定對象與哈希表中的特定鍵進行比較。 |
MemberwiseClone() | 創建當前對象的淺拷貝。 |
OnDeserialization(Object) | 實現 ISerialized 接口並在反序列化完成時引發反序列化事件。 |
Remove(Object) | 從哈希表中刪除具有指定鍵的元素。 |
Synchronized(Hashtable) | 返回哈希表的同步(線程安全)包裝器。 |
ToString() | 返回表示當前對象的字符串。 |
例子:
C#
// C# program to illustrate Add()
// and Remove() Methods
using System;
using System.Collections;
class Program {
// Main method
static void Main(string[] args)
{
// -------- Add() Method --------
// create and initialize Hash table
// using Add() method
Hashtable g = new Hashtable();
g.Add("1", "Welcome");
g.Add("2", "to");
g.Add("3", "Geeks");
g.Add("4", "for");
g.Add("5", "Geeks");
ICollection key = g.Keys;
// Print Hash table
Console.WriteLine("Hashtable Contains:");
foreach(var val in key)
{
Console.WriteLine(val + "-" + g[val]);
}
Console.WriteLine();
// --------- Remove() Method ----------'
// Remove element 4
// using Remove() method
g.Remove("4");
// printing updated Hash table
Console.WriteLine("Hashtable after removing element 4:");
foreach(var val in key)
{
Console.WriteLine(val + "-" + g[val]);
}
}
}
輸出:
Hashtable Contains: 2-to 3-Geeks 5-Geeks 1-Welcome 4-for Hashtable after removing element 4: 2-to 3-Geeks 5-Geeks 1-Welcome
參考:
相關用法
- C# Hashtable和Dictionary的區別用法及代碼示例
- C# HashSet用法及代碼示例
- C# HybridDictionary用法及代碼示例
- C# String Clone()用法及代碼示例
- C# String Compare()用法及代碼示例
- C# String CompareOrdinal()用法及代碼示例
- C# String CompareTo()用法及代碼示例
- C# String Concat()用法及代碼示例
- C# String Contains()用法及代碼示例
- C# String Copy()用法及代碼示例
- C# String CopyTo()用法及代碼示例
- C# String EndsWith()用法及代碼示例
- C# String Equals()用法及代碼示例
- C# String Format()用法及代碼示例
- C# String GetEnumerator()用法及代碼示例
- C# String IndexOf()用法及代碼示例
- C# String Insert()用法及代碼示例
- C# String IsInterned()用法及代碼示例
- C# String IsNormalized()用法及代碼示例
- C# String IsNullOrEmpty()用法及代碼示例
- C# String IsNullOrWhiteSpace()用法及代碼示例
- C# String Join()用法及代碼示例
- C# String LastIndexOf()用法及代碼示例
- C# String LastIndexOfAny()用法及代碼示例
- C# String Normalize()用法及代碼示例
注:本文由純淨天空篩選整理自ankita_saini大神的英文原創作品 C# | Hashtable Class。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。