C#程式:根據值獲取雜湊表集合中的鍵
雜湊表是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)。然後將C#程式中每個鍵對應的值與指定值進行比較,如果匹配,則返回該鍵。
示例
下面的程式顯示了此實現。
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”之後引入了一個null值。
輸出
該程式旨在獲取null值的鍵。生成的輸出如下所示。
Key for the value = is Third
這裡,由於雜湊表允許null值,當我們指定null值時,將檢索null值的相應鍵。
現在讓我們更改我們想要獲取鍵的值。下面我們將值更改為'!'並執行程式。
string value = "!";
輸出
Key for the value = ! is Fourth
雜湊表中的第三個元素是null值,因此引語的最後部分在雜湊表中位於第四個位置。
透過這種方式,我們可以對雜湊表進行程式設計,以便在給定雜湊表中的特定值的情況下檢索鍵。正如我們已經看到的,由於雜湊表允許null值,我們也可以傳遞null值並獲取其對應的鍵。