哈希表是 C# 中的一個集合,其中包含標識為鍵值對的項目。因此,與 C# 中的堆疊、佇列或 ArrayList 等儲存單一值的其他資料結構不同,C# 中的雜湊表儲存 2 個值。這兩個值,即鍵值對,構成了哈希表的一個元素。
在雜湊表中,鍵是唯一的且不應為null。哈希表中的值可以為null且可以重複。
在C#中,System.collections介面提供了一個名為「Hashtable」的類,用來表示哈希表集合。這個類別提供了各種建構函式來建立哈希表對象,也提供了方法和屬性來對雜湊表物件進行各種操作。
在本文中,我們將了解如何根據值取得雜湊表集合中的鍵。
Hashtable類別沒有直接的方法來根據雜湊表中的值取得鍵。因此,我們需要編寫哈希表集合的程序,以便在給定值的情況下檢索鍵。
我們來討論一下根據值取得金鑰的方法。為此,我們根據哈希表鍵遍歷整個哈希表。然後我們將每個值與指定的值進行匹配,如果值匹配,我們會返回相應的鍵。
對於遍歷哈希表,我們可以使用如下的foreach循環。
foreach (string key in langCodes.Keys) { if (langCodes[key].ToString() == value) { retKey = key; } }
我們在foreach迴圈中使用的迭代器來遍歷雜湊表的是鍵的集合(langCodes.Keys)。然後,將每個鍵的對應值與指定的值進行比較,如果匹配,則傳回該特定鍵。
下面的程式展示了這個實作。
using System; using System.Collections; class Program { public static void Main(){ // Create a Hashtable Hashtable langCodes = new Hashtable(); // Add elements to the Hashtable langCodes.Add("C++", "CPlusPlus"); langCodes.Add("C#", "CSharp"); langCodes.Add("Java", "Java"); langCodes.Add("PL", "Perl"); string value = "CSharp"; string retKey=""; foreach (string key in langCodes.Keys){ if (langCodes[key].ToString() == value){ retKey = key; } } if(retKey != ""){ Console.WriteLine("Key for the value = {0} is {1}", value,retKey); } else { Console.WriteLine("Key for the value = {0} is not present in the Hashtable", value); } } }
這裡,我們有一個名為「langCodes」的雜湊表,由程式語言程式碼及其對應的值組成。宣告一個包含指定值的字串變數。然後使用 foreach 構造遍歷整個雜湊表並檢查與指定值相同的鍵。當找到一個這樣的鍵時,該鍵值將在變數 retKey 中傳回。
如果變數retKey中有一個值,我們將該值作為指定值的鍵輸出。如果retKey為空,則可以得出結論
Key for the value = CSharp is C#
現在假設我們想要取得一個值為「JavaScript」的鍵。
string value = "JavaScript";
透過這個改變,我們執行上述程序,它將產生以下輸出。
Key for the value = JavaScript is not present in the Hashtable
現在,由於雜湊表中沒有與JavaScript語言相符的元素,程式會顯示上述訊息。
讓我們舉一個例子來簡化這個主題。
以下程式取得雜湊表中給定特定值的鍵。
using System; using System.Collections; class Program { public static void Main() { // Create a Hashtable Hashtable myHashTable = new Hashtable(); // Add elements to the Hashtable myHashTable.Add("First", "Hello"); myHashTable.Add("Second", "World"); myHashTable.Add("Third", ""); myHashTable.Add("Fourth", "!"); string value = ""; string retKey=""; foreach (string key in myHashTable.Keys) { if (myHashTable[key].ToString() == value) { retKey = key; } } if(retKey != ""){ Console.WriteLine("Key for the value = {0} is {1}", value,retKey); } else { Console.WriteLine("Key for the value = {0} is not present in the Hashtable", value); } } }
在這個程式中,我們有一個哈希表“myHashTable”,其中儲存著名言“Hello World!”。但我們並沒有連續儲存這些單字。相反,我們在“World”一詞後面引入了一個空值。
該程式旨在取得空值的鍵。產生的輸出如下所示。
#Key for the value = is Third
在這裡,由於雜湊表允許空值,當我們指定一個空值時,將檢索對應的空值鍵。
現在讓我們改變我們想要取得金鑰的值。下面我們將值改為'!'並執行程式。
string value = "!";
Key for the value = ! is Fourth
哈希表中的第三個元素是一個空值,因此引文的最後部分是哈希表中的第四個位置。
透過這種方式,我們可以編程使哈希表在給定哈希表中的特定值時檢索鍵。正如我們已經看到的,由於雜湊表允許空值,我們也可以傳遞空值並獲得其對應的鍵。
以上是C# 程式根據 Hashtable 集合中的值取得鍵的詳細內容。更多資訊請關注PHP中文網其他相關文章!