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值並獲取其對應的鍵。

更新於:2022年12月22日

瀏覽量:1000+

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告