C# 中的雜湊表集合是基於鍵的雜湊碼組織的鍵值對的非泛型集合。鍵用於存取哈希表集合中的元素。雜湊可以幫助我們有效地檢索資料並消除對昂貴的資料搜尋技術的需求。散列技術使用密鑰本身來定位資料。此哈希表鍵是不可變的,且哈希表中不允許出現重複的條目。
Hashtable類別定義在System.Collections命名空間中,為C#中的哈希表集合提供了基底類別庫。這個Hashtable類別用於建立一個使用哈希表進行儲存的鍵值對集合。透過計算鍵的雜湊碼並將其儲存在另一個籃子中,優化了對特定鍵的查找。當我們從哈希表中存取值時,它會將雜湊碼與指定的鍵進行匹配。
在本教學中,我們將討論一種用另一個雜湊表中的項目或元素取代雜湊表中的項目或元素的方法。
上面討論的Hashtable類別提供了用於建立Hashtable物件的建構子和用於新增、刪除元素以及檢查元素、鍵或值是否存在於hashtable中的方法。它還提供了用於檢查hashtable是否為空、計算hashtable中元素數量等屬性。
但它不允許我們的方法從另一個哈希表中替換整個哈希表中的項目。我們可以透過替換值來替換單一項。
要用另一個哈希表的內容來取代整個哈希表的內容,通常我們會遍歷整個第二個哈希表,並將第一個哈希表的內容替換為第二個哈希表的內容。
我們將使用下面所示的方法。
foreach (DictionaryEntry item in secondHashtable) { firstHashtable[item.Key] = item.Value; Console.WriteLine("{0} ({1}) ", item.Key, item.Value); }
首先,我們遍歷第二個雜湊表,然後用第二個雜湊表的每個鍵值對來取代第一個雜湊表的鍵值對。
實作這種方法的整個程式如下所示。
using System; using System. Collections; class MyHashTable { // Main Method static public void Main() { // Create hashtable using the default constructor Hashtable indianNumberSystem = new Hashtable(); //add a key/value pair using the Add() method indianNumberSystem.Add(1,"Ones"); indianNumberSystem.Add(10,"Tens"); indianNumberSystem.Add(100,"Hundred"); indianNumberSystem.Add(1000,"Thousand"); Console.WriteLine("Contents of indianNumberSystem hashtable:"); foreach(DictionaryEntry ele1 in indianNumberSystem){ Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value); } Hashtable langCodes = new Hashtable(); langCodes.Add("C++","CPlusPlus"); langCodes.Add("C#","CSharp"); langCodes.Add("Java","Java"); langCodes.Add("PL","Perl"); Console.WriteLine("Contents of langCodes Hashtable:"); foreach(DictionaryEntry ele1 in langCodes){ Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value); } Console.WriteLine("After Replacing with langCodes, indianNumberSystem: "); foreach (DictionaryEntry item in langCodes) { indianNumberSystem[item.Key] = item.Value; Console.WriteLine("{0} ({1}) ", item.Key, item.Value); } } }
這裡我們有兩個哈希表,indianNumberSystem和langCodes。我們用值填充兩個哈希表,然後顯示它們的內容。然後我們遍歷langCodes哈希表,並將indianNumberSystem哈希表的每個元素替換為langCodes哈希表的元素。
此程式的輸出如下所示。
Contents of indianNumberSystem hashtable: 1000 (Thousand) 10 (Tens) 100 (Hundred) 1 (Ones) Contents of langCodes Hashtable: Java (Java) C# (CSharp) PL (Perl) C++ (CPlusPlus) After Replacing with langCodes, indianNumberSystem: Java (Java) C# (CSharp) PL (Perl) C++ (CPlusPlus)
從輸出我們可以看到,取代後indianNumberSystem的內容被替換為langCodes的內容。
現在讓我們看看下一個範例。
在這個範例中,我們將有兩個哈希表:indianNumberSystem 和 numSys。這裡我們不填充哈希表 indianNumberSystem。我們只是創建一個物件。 numSys 雜湊表使用 Add 方法新增了下列值。
1 |
一個 |
10 |
#十個 |
100 |
#一百 |
1000 |
#千 |
這個範例的完整程式如下所示。
using System; using System. Collections; class MyHashTable { // Main Method static public void Main() { // Create hashtable using the default constructor Hashtable indianNumberSystem = new Hashtable(); Hashtable numSys = new Hashtable(); numSys.Add(1,"Ones"); numSys.Add(10,"Tens"); numSys.Add(100,"Hundred"); numSys.Add(1000,"Thousand"); Console.WriteLine("Contents of numSys Hashtable:"); foreach(DictionaryEntry ele1 in numSys){ Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value); } Console.WriteLine("After Replacing with numSys, indianNumberSystem: "); foreach (DictionaryEntry item in numSys) { indianNumberSystem[item.Key] = item.Value; Console.WriteLine("{0} ({1}) ", item.Key, item.Value); } } }
這裡我們使用與第一個程式相同的方法,唯一的差別是第一個雜湊表是空的。然後我們直接將第二個哈希表的項替換或移動到第一個哈希表中。
The output of this program is given below.
Contents of numSys Hashtable: 1000 (Thousand) 10 (Tens) 100 (Hundred) 1 (Ones) After Replacing with numSys, indianNumberSystem: 1000 (Thousand) 10 (Tens) 100 (Hundred) 1 (Ones)
如程式的輸出所示,numSys 表的內容現在是 indianNumberSystem 的內容。
因此,透過使用簡單的循環並遍歷哈希表,我們可以用另一個哈希表替換其中的項目。
#以上是將一個哈希表中的項目替換為另一個哈希表中的 C# 程序的詳細內容。更多資訊請關注PHP中文網其他相關文章!