Heim  >  Artikel  >  Backend-Entwicklung  >  C#-Programm zum Zusammenführen zweier Hash-Tabellensammlungen

C#-Programm zum Zusammenführen zweier Hash-Tabellensammlungen

WBOY
WBOYnach vorne
2023-09-06 11:21:08668Durchsuche

合并两个哈希表集合的 C# 程序

Hash-Tabellensammlungen in C# speichern Schlüssel-Wert-Paare. Jedes Element oder Element in der Sammlung ist ein Schlüssel-Wert-Paar, das heißt, die Sammlung ist eine Sammlung mit zwei Elementen. Der Schlüssel ist ein eindeutiger, nicht leerer Schlüssel, der für den Zugriff auf Elemente in einer Hash-Tabelle verwendet wird.

Hash-Tabellensammlungen sind unveränderlich und können keine doppelten Elemente enthalten. Das bedeutet, dass Schlüssel-Wert-Kombinationen eindeutig sein sollten. Diese Werte können jedoch leer oder wiederholt sein. .Net Framework stellt eine HashTable-Klasse zum Implementieren einer Hash-Tabellensammlung bereit und enthält die Funktionalität, die zum Implementieren einer Hash-Tabelle ohne zusätzliche Codierung erforderlich ist.

Jedes Element in einer Hash-Tabellensammlung ist ein DictionaryEntry-Objekt mit zwei Eigenschaften: einem Schlüsselelement und einem Wertelement. Wenn ein Element zu einer Hash-Tabelle hinzugefügt wird, wird automatisch ein Hash-Code generiert. Dieser Hash-Code ist intern und versteckt. Die Elemente in einer Hash-Tabellensammlung werden nach dem versteckten Hash-Code sortiert. Daher gelten Hash-Tabellenelemente als zufällig ausgewählt.

Mit einer kurzen Einführung in Hash-Tabellensammlungen sehen wir uns an, wie man zwei Hash-Tabellensammlungen zusammenführt.

Wie füge ich zwei Hash-Tabellensammlungen zusammen?

Hashtable-Klasse wird von System bereitgestellt. Der Collection-Namespace enthält nur Basisklassenbibliotheken, die zum Erstellen von Hash-Tabellenobjekten und zum Ausführen von Vorgängen wie dem Hinzufügen/Entfernen von Elementen, dem Zählen der Anzahl von Elementen usw. verwendet werden können. Es gibt keine Methode/Funktion, mit der zwei Hash-Tabellen zusammengeführt werden können.

Wir müssen unseren eigenen Weg finden, zwei Hash-Tabellen zusammenzuführen. Wir wissen, dass die Kapazität oder Größe einer Hash-Tabelle die Anzahl der Elemente ist, die die Hash-Tabelle enthält. Wenn Elemente in die Hash-Tabelle eingefügt werden, wächst die Größe der Hash-Tabelle automatisch durch Neuzuweisung.

Wenn wir also zwei Hash-Tabellen zusammenführen, fügen wir Elemente einer Hash-Tabelle zur anderen hinzu. Wenn wir Elemente hinzufügen, wird die Größe dieser Hash-Tabelle entsprechend angepasst.

Methode

  • Erstellen Sie zwei Hash-Tabellenobjekte.

  • Verwenden Sie die Add-Methode, um beide Tabellen mit Elementen zu füllen.

  • Durchlaufen Sie die zweite Hash-Tabelle mit dem Schlüssel. Wenn das aktuelle Element (der Schlüssel, der durchlaufen wird) noch nicht in der ersten Hash-Tabelle vorhanden ist, fügen Sie jedes seiner Schlüssel-Wert-Paare zur ersten Hash-Tabelle hinzu.

    李>
  • Drucken Sie die generierte Hash-Tabelle.

Hinweis: Bevor wir einen Schlüssel hinzufügen, prüfen wir explizit, ob der Schlüssel in der Hash-Tabelle vorhanden ist, da Hash-Tabellen das Hinzufügen doppelter Schlüssel nicht zulassen.

Beispiel

Konvertieren Sie die obige Methode wie unten gezeigt in ein C#-Programm.

using System;
using System. Collections;
class MyHashTable {
   static public void Main() {
      Hashtable indianNumberSystem = new Hashtable();
      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 indianNumberSystem){
         Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value);
      }
      foreach (DictionaryEntry entry in langCodes) {
         if(!indianNumberSystem.ContainsKey(entry.Key)) {
         indianNumberSystem.Add(entry.Key, entry.Value);
      }}
      Console.WriteLine("Key, Value pairs after merging langCodes to indianNumberSystem:");
      foreach(DictionaryEntry ele1 in indianNumberSystem){
         Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value);
      }
   }
}

Hier haben wir zwei Hash-Tabellen, indianNumberSystem und langCodes.

Die Hash-Tabelle indianNumberSystem enthält die folgenden Daten:

1

"eins"

10

"十"

100

"Einhundert"

1000

"千"

Die Hash-Tabelle langCodes enthält die folgenden Daten.

C++

"CPlusPlus"

C#

„CSharp“

Java

"Java"

PL

"Perl"

Wir zeigen zunächst den Inhalt dieser beiden Tabellen an. Anschließend iterieren wir darüber mit den Schlüsseln der langCodes-Hash-Tabelle. In der Traversal-Schleife prüfen wir zunächst, ob die Hash-Tabelle indianNumberSystem den gleichen Schlüssel hat. Wenn der Schlüssel nicht vorhanden ist, fügen wir das langCodes-Element, auf das der aktuelle Schlüssel zeigt, zur Hash-Tabelle indianNumberSystem hinzu.

Ausgabe

Schließlich zeigen wir die zusammengeführte Tabelle an.

Contents of indianNumberSystem hashtable:
1000 (Thousand)
10 (Tens)
100 (Hundred)
1 (Ones)
Contents of langCodes Hashtable:
1000 (Thousand)
10 (Tens)
100 (Hundred)
1 (Ones)
Key, Value pairs after merging langCodes to indianNumberSystem:
100 (Hundred)
1000 (Thousand)
PL (Perl)
10 (Tens)
C# (CSharp)
Java (Java)
C++ (CPlusPlus)
1 (Ones)

Anhand der generierten Ausgabe können wir erkennen, dass beide Tabellen korrekt zusammengeführt werden.

Beispiel

Lassen Sie uns nun ein weiteres Beispiel betrachten, nämlich das unten angegebene C#-Programm.

using System;
using System. Collections;
using System.Collections.Generic;
class MyHashTable {
   static public void Main() {
      Hashtable indianNumberSystem = new Hashtable();
      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 NumberNames = new Hashtable();
      NumberNames.Add(1,"One");
      NumberNames.Add(2,"Two");
      NumberNames.Add(3,"Three");
      NumberNames.Add(4,"Four");
      Console.WriteLine("Contents of NumberNames Hashtable:");
         foreach(DictionaryEntry ele1 in NumberNames){
         Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value);
      }
      foreach (DictionaryEntry entry in NumberNames) {
         if(!indianNumberSystem.ContainsKey(entry.Key)) {
         indianNumberSystem.Add(entry.Key, entry.Value);
      }}
      Console.WriteLine("Key, Value pairs after merging NumberNames to indianNumberSystem:");
      foreach(DictionaryEntry ele1 in indianNumberSystem){
         Console.WriteLine("{0} ({1}) ", ele1.Key, ele1.Value);
      }
   }
}

Dieses Programm ist das gleiche wie das vorherige, außer dass wir die Hash-Tabelle langCodes durch die Hash-Tabelle NumberNames ersetzen. Die NumberNames-Hashtabelle enthält die folgenden Elemente.

1

“一”

2

"Zwei"

3

"Drei

4

"Vier"

Ausgabe

Wie wir sehen können, haben die Hash-Tabellen indianNumberSystem und NumberNames gemeinsame Daten. Lassen Sie uns nun dieses Programm ausführen, um zu überprüfen, wie die Zusammenführung erfolgt.

Contents of indianNumberSystem hashtable:
1000 (Thousand)
10 (Tens)
100 (Hundred)
1 (Ones)
Contents of NumberNames Hashtable:
4 (Four)
3 (Three)
2 (Two)
1 (One)
Key, Value pairs after merging NumberNames to indianNumberSystem:
100 (Hundred)
1000 (Thousand)
10 (Tens)
4 (Four)
3 (Three)
2 (Two)
1 (Ones)

Wie Sie der obigen Ausgabe entnehmen können, wird das Datenelement (Schlüssel=1) in NumberNames nicht zur Hash-Tabelle indianNumberSystem hinzugefügt. Dies liegt daran, dass eine Vervielfältigung nicht zulässig ist.

Fazit

So können wir zwei Hash-Tabellensammlungen zusammenführen, indem wir die Daten einer Hash-Tabelle zu einer anderen Hash-Tabellensammlung kopieren oder hinzufügen. Wenn in beiden Hashtabellen ein gemeinsamer Schlüssel vorhanden ist, werden keine doppelten Schlüssel hinzugefügt. Programmierer müssen jedoch darauf achten, beim Hinzufügen von Daten zu einer Hash-Tabelle dies zu überprüfen, um zu verhindern, dass versehentlich Daten hinzugefügt werden, was zu unvorhersehbaren Ergebnissen führt.

Das obige ist der detaillierte Inhalt vonC#-Programm zum Zusammenführen zweier Hash-Tabellensammlungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen