如何在 C# 中獲取 HashTable 的鍵?
HashTable 是 C# 中一個非泛型集合。它儲存鍵值對,類似於泛型“Dictionary”集合。HashTable 定義在 System.Collections 名稱空間中。
HashTable 由鍵值對組成,其中每個鍵都計算為一個雜湊碼,並在內部儲存在不同的桶中。每次訪問 HashTable 時,都會將此雜湊碼與指定鍵的雜湊碼進行匹配,從而訪問相應的數值。這種機制優化了 HashTable 中的查詢。
現在讓我們討論如何在 C# 中獲取 HashTable 的鍵。
如何從 HashTable 獲取鍵?
我們可以使用兩種方法從雜湊表中獲取鍵。
使用 for-each 迴圈並透過迭代雜湊表來訪問鍵
從雜湊表中檢索鍵的集合並逐個顯示它們。
讓我們使用示例演示這兩種方法。
使用 For-Each 迴圈從 HashTable 獲取鍵
在這種方法中,我們宣告一個包含鍵值對的雜湊表。然後使用 for-each 迴圈顯示雜湊表中的鍵。
為了以程式設計方式實現這一點,我們將使用以下雜湊表。
{“US", "New York"}
{"FR", "Paris"}
{"UK", "London"}
{"IN", "Mumbai"}
{"GER", "Berlin"}
上述雜湊表以國家程式碼作為鍵,以其對應的重要城市作為值。
如果上述雜湊表稱為 Citytable,則我們使用 DictionaryEntry 迭代器如下訪問其鍵:
foreach(DictionaryEntry ele1 in Citytable){
Console.WriteLine("{0}", ele1.Key);
此程式碼將顯示雜湊表中的每個鍵。
示例 1
此方法的完整工作程式如下所示:
using System;
using System.Collections;
class MyHashTable {
// Main Method
static public void Main() {
// Create a hashtable instance
Hashtable Citytable = new Hashtable();
// Adding key/value pair in the hashtable using Add() method
Citytable.Add("US", "New York");
Citytable.Add("FR", "Paris");
Citytable.Add("UK", "London");
Citytable.Add("IN", "Mumbai");
Citytable.Add("GER", "Berlin");
//Print hashtable keys
Console.WriteLine("Citytable Keys:");
foreach(DictionaryEntry ele1 in Citytable){
Console.WriteLine("{0}", ele1.Key);
}
}
}
在此程式中,我們宣告並定義了一個名為 Citytable 的雜湊表,其中包含國家程式碼及其重要城市分別作為鍵值對。使用 Add() 方法填充雜湊表的值後,我們啟動一個 for-each 迴圈,該迴圈使用型別為 DictionaryEntry 的迭代器“ele1”來迭代 Citytable。然後,對於每次迭代,都會列印鍵值。
輸出
Citytable Keys: FR US IN GER UK
如我們所見,輸出中僅顯示了 Citytable 的鍵。這是最常見的方法,因為我們大多使用 for-each 迴圈來顯示任何集合或陣列的內容。
我們可以稍微修改上述程式,並使其顯示給定鍵的對應值。
為此,我們必須對迭代迴圈進行以下更改。
foreach(DictionaryEntry ele1 in Citytable){
Console.WriteLine("{0} = {1}", ele1.Key, ele1.Value);
在上面的程式碼中,我們現在還列印了迭代計數器的 Value 部分。
示例 2
此修改的完整程式如下所示:
using System;
using System.Collections;
class MyHashTable {
// Main Method
static public void Main() {
// Create a hashtable instance
Hashtable Citytable = new Hashtable();
// Adding key/value pair in the hashtable using Add() method
Citytable.Add("US", "New York");
Citytable.Add("FR", "Paris");
Citytable.Add("UK", "London");
Citytable.Add("IN", "Mumbai");
Citytable.Add("GER", "Berlin");
//Print hashtable keys
Console.WriteLine("Citytable Keys:");
foreach(DictionaryEntry ele1 in Citytable){
Console.WriteLine("{0} = {1}", ele1.Key, ele1.Value);
}
}
}
輸出
Citytable Keys: FR = Paris US = New York IN = Mumbai GER = Berlin UK = London
因此,這裡我們顯示了 Citytable 的鍵值對。
讓我們繼續下一個方法。
使用集合
在這種方法中,我們首先使用集合從 Hashtable 獲取鍵的集合,然後列印這些鍵。鍵作為字串值列印,這些字串值只不過是集合的元素。
讓我們以程式語言的雜湊表為例。
{"CPP", "C++"}
{"CS", "C#"}
{"JAVA", "JAVA"}
{"PL", "PERL"}
{"JS", "JAVASCRIPT"}
我們在程式中將上述表定義為雜湊表 Langtable。然後,我們宣告一個 ICollection 物件“keys”,並將雜湊表鍵收集到此物件中。
ICollection keys = Langtable.Keys;
一旦我們獲得了鍵集合,我們就可以輕鬆地遍歷此集合並顯示每個鍵作為字串。
foreach (String k in keys){
Console.WriteLine(k);
}
透過這種方式,我們可以單獨顯示雜湊表中的每個鍵。
示例
此方法的完整程式在此給出。
using System;
using System.Collections;
class MyHashTable {
// Main Method
static public void Main() {
// Create a hashtable instance
Hashtable Langtable = new Hashtable();
// Adding key/value pair in the hashtable using Add() method
Langtable.Add("CPP", "C++");
Langtable.Add("CS", "C#");
Langtable.Add("JAVA", "JAVA");
Langtable.Add("PL", "PERL");
Langtable.Add("JS", "JAVASCRIPT");
//Collection of Hashtable keys
ICollection keys = Langtable.Keys;
Console.WriteLine("Language Keys:");
foreach (String k in keys){
Console.WriteLine(k);
}
Console.ReadKey();
}
}
如前所述,上述程式包含一個程式語言的雜湊表,其中語言程式碼作為鍵,其名稱作為值。我們首先使用 ICollection 物件從雜湊表中檢索鍵的集合。然後,我們遍歷此物件並逐個顯示鍵。
輸出
Language Keys: PL JS CS JAVA CPP
因此,程式顯示了雜湊表的語言程式碼(鍵)。同樣,如果我們想要每個鍵的對應值,我們可以透過使用給定鍵訪問雜湊表來列印它。我們將此修改留給讀者。
因此,我們可以使用我們上面討論的兩種方法中的任何一種來獲取(**訪問**)雜湊表中的雜湊表鍵。儘管這兩種方法都很簡單,但對於大多數集合,我們大多使用第一種方法,即使用 for-each 迴圈遍歷雜湊表。
在後續文章中,我們將討論更多可以在 C# 中執行的 HashTable 操作。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP