Πώς μπορείτε να εργαστείτε με τη συλλογή HashTable στο Visual C#

Για την Microsoft Visual Basic .NET έκδοση αυτού του άρθρου, ανατρέξτε στην ενότητα 307933 .

Σύνοψη

Αυτό το άρθρο βήμα προς βήμα σας δείχνει πώς να χρησιμοποιήσετε τη συλλογή HashTable. Επειδή κλειδώματος εξαλείφει την ανάγκη για δαπανηρή έρευνα των δεδομένων για την ανάκτηση δεδομένων, μπορείτε να χρησιμοποιήσετε το μηχανισμό για την αποτελεσματική ανάκτηση δεδομένων. Κλειδώματος χρησιμοποιεί την τιμή από το ίδιο το κλειδί για τον εντοπισμό των δεδομένων.

Οι βιβλιοθήκες κλάση βάσης προσφέρουν μια κλάση HashTable που έχει οριστεί στο χώρο ονομάτων System.Collections , έτσι ώστε δεν απαιτούνται για τη δική σας πίνακες κατακερματισμού.

Βήματα για τη δημιουργία του δείγματος

Μια συλλογή HashTable αποθηκεύει ένα ζεύγος (κλειδί, τιμή) και χρησιμοποιεί το κλειδί κατακερματισμού και αποκτήστε τη θέση αποθήκευσης. Το κλειδί είναι αμετάβλητες και δεν είναι δυνατό να έχουν διπλότυπες καταχωρήσεις στη το HashTable. Αυτό το δείγμα χρησιμοποιεί πολλές παρουσίες μιας κλάσης απλή πρόσωπο για την αποθήκευση σε ένα HashTable. Το επώνυμο χρησιμοποιείται ως το κλειδί.
  1. Ανοίξτε το Microsoft Visual Studio και δημιουργήστε ένα έργο εφαρμογή φόρμες των Windows στο Visual C#. Form1 προστίθεται στο έργο, από προεπιλογή.
  2. Στην Εξερεύνηση λύσεων, κάντε δεξιό κλικ στο όνομα του έργου, στην Προσθήκηκαι, στη συνέχεια, κάντε κλικ στο κουμπί κλάση για να προσθέσετε μια λειτουργική μονάδα κλάσης. Class1 προστίθεται στο έργο, από προεπιλογή.
  3. Αντικατάσταση κώδικα στη λειτουργική μονάδα Class1 με τον ακόλουθο κώδικα:
     public class Person{
    public string Fname, Lname;

    public Person(string FirstName, string LastName)
    {
    Fname = FirstName;
    Lname = LastName;
    }

    public override string ToString()
    {
    return Fname + " " + Lname;
    }
    }

    Η κλάση πρόσωπο έχει μια κατασκευή η οποία λαμβάνει τις παραμέτρους "όνομα" και "Επώνυμο" και αντιστοιχίζει αυτές τις παραμέτρους για τις τοπικές μεταβλητές. Η συνάρτηση ToString παρακάμπτει ToString από την κλάση αντικειμένου για την επιστροφή των μεταβλητών Fname και Lname συνδέονται μεταξύ τους.
  4. Δημιουργήστε ένα αντικείμενο Hashtable επιπέδου φόρμας και δηλώστε τρεις μεταβλητές τύπου άτομο. Προσθέστε τον ακόλουθο κώδικα στην κλάση Form1:
    <?xm-deletion_mark author="v-bobbid" time="20080711T172143-0800" data="private Hashtable MyTable = new Hashtable();
    //For simplicity, create three Person objects to add to the HashTable collection.

    Person Person1,Person2,Person3; "?><?xm-insertion_mark_start author="v-bobbid" time="20080711T172143-0800"?>System.Collections.Hashtable MyTable = new
    System.Collections.Hashtable();

    //For simplicity, create three Person objects to add to the HashTable collection.

    Person Person1,Person2,Person3;
    <?xm-insertion_mark_end?>

  5. Στα παρακάτω βήματα, χρησιμοποιήστε τη μέθοδο το αντικείμενο Hashtable για να προσθέσετε τρία αντικείμενα πρόσωπο το Hashtable σε ένα μπλοκ try-catch . Το μπλοκ try-catch αλιευμάτων την εξαίρεση και εμφανίζει ένα μήνυμα, αν υπάρχουν διπλότυπα κλειδιά:
    1. Τοποθετήστε ένα στοιχείο ελέγχου κουμπιού σε Form1 και αλλάξτε την ιδιότητα κειμένου για να Προσθέσετε στοιχεία.
    2. Κάντε διπλό κλικ στο κουμπί για να ανοίξετε το παράθυρο κώδικα και επικολλήστε τον ακόλουθο κώδικα στο συμβάν Button1_Click :
      Person1 = new Person("David", "Burris");Person2 = new Person("Johnny", "Carrol");
      Person3 = new Person("Ji", "Jihuang");

      //The Add method takes Key as the first parameter and Value as the second parameter.

      try
      {
      MyTable.Add(Person1.Lname, Person1);
      MyTable.Add(Person2.Lname, Person2);
      MyTable.Add(Person3.Lname, Person3);

      }
      catch (ArgumentException ae)
      {
      MessageBox.Show("Duplicate Key");
      MessageBox.Show(ae.Message);
      }

  6. Το αντικείμενο Hashtable παρέχει ένα δεικτοδότη. Στα παρακάτω βήματα, ευρετήριο με το κλειδί για να αποκτήσετε πρόσβαση στην τιμή που είναι αποθηκευμένη στη θέση διαγραμμισμένο:
    1. Προσθέστε ένα στοιχείο ελέγχου κουμπιού Form1 και αλλάξτε την ιδιότητα Name για να Λάβετε στοιχεία.
    2. Κάντε διπλό κλικ στο κουμπί και επικολλήστε τον ακόλουθο κώδικα στο συμβάν Button2_Click :
      //Use the indexer of the Hashtable class to retrieve your objects. The indexer takes //Key as a parameter and accesses it with the Hashed location.

      try
      {
      MessageBox.Show(MyTable[Person1.Lname].ToString());
      MessageBox.Show(MyTable[Person2.Lname].ToString());
      MessageBox.Show(MyTable[Person3.Lname].ToString());
      }
      catch (NullReferenceException ex)
      {
      MessageBox.Show("Key not in Hashtable");
      MessageBox.Show(ex.Message);
      }

  7. Στα παρακάτω βήματα, χρησιμοποιήστε τη μέθοδο Remove για να καταργήσετε ένα στοιχείο από τη συλλογή HashTable:
    1. Προσθέστε ένα στοιχείο ελέγχου κουμπιού Form1 και αλλάξτε την ιδιότητα κειμένου για να Καταργήσετε το στοιχείο.
    2. Κάντε διπλό κλικ στο κουμπί και επικολλήστε τον ακόλουθο κώδικα στο συμβάν Button3_Click :
      <?xm-deletion_mark author="v-bobbid" time="20080711T173011-0800" data="if (MyTable.Count == 0) {
      MessageBox.Show(&quot;There are no items in HashTable&quot;);
      }
      else
      {
      MessageBox.Show(&quot;The count before removing an Item is&quot; + &quot; &quot; + MyTable.Count);
      MessageBox.Show(&quot;Removing value stored at key value (Burris)&quot;);
      Remove the object that is stored at the Key value Person1.Lname.
      MyTable.Remove(Person1.Lname);
      }"?><?xm-insertion_mark_start author="v-bobbid" time="20080711T173011-0800"?>if (MyTable.Count == 0)
      {
      MessageBox.Show("There are no items in HashTable");
      }
      else
      {
      MessageBox.Show("The count before removing an Item is" + " " + MyTable.Count);
      MessageBox.Show("Removing value stored at key value (Burris)");
      // Remove the object that is stored at the Key value Person1.Lname.
      MyTable.Remove(Person1.Lname);
      }
      <?xm-insertion_mark_end?>

  8. Στα παρακάτω βήματα, απαρίθμηση των στοιχείων που είναι αποθηκευμένα στη συλλογή HashTable:
    1. Προσθέστε ένα στοιχείο ελέγχου κουμπιού Form1 και αλλάξτε την ιδιότητα κειμένου σε απαρίθμηση.
    2. Κάντε διπλό κλικ στο κουμπί και επικολλήστε τον ακόλουθο κώδικα στο συμβάν Button4_Click :
      <?xm-deletion_mark author="v-bobbid" time="20080711T174252-0800" data="IDictionaryEnumerator Enumerator;
      if (MyTable.Count == 0)
      MessageBox.Show(&quot;The hashtable is empty&quot;);
      else
      {
      MessageBox.Show(&quot;Enumerating through the Hashtable collection&quot;);
      Enumerator = MyTable.GetEnumerator();

      while (Enumerator.MoveNext())
      {
      MessageBox.Show(Enumerator.Value.ToString());
      }
      }

      ICollection MyKeys;


      if (MyTable.Count == 0)
      MessageBox.Show(&quot;The hashtable is empty&quot;);
      else
      {
      MessageBox.Show(&quot;Accessing keys property to return keys collection&quot;);
      MyKeys = MyTable.Keys;

      foreach (object Key in MyKeys)
      {
      MessageBox.Show(Key.ToString());
      }
      }
      "?><?xm-insertion_mark_start author="v-bobbid" time="20080711T174252-0800"?>System.Collections.IDictionaryEnumerator Enumerator;

      if (MyTable.Count == 0)
      MessageBox.Show("The hashtable is empty");
      else
      {
      MessageBox.Show("Enumerating through the Hashtable collection");
      Enumerator = MyTable.GetEnumerator();

      while (Enumerator.MoveNext())
      {
      MessageBox.Show(Enumerator.Value.ToString());
      }
      }

      System.Collections.ICollection MyKeys;


      if (MyTable.Count == 0)
      MessageBox.Show("The hashtable is empty");
      else
      {
      MessageBox.Show("Accessing keys property to return keys collection");
      MyKeys = MyTable.Keys;

      foreach (object Key in MyKeys)
      {
      MessageBox.Show(Key.ToString());
      }
      }
      <?xm-insertion_mark_end?>
      Αυτός ο κωδικός δηλώνει μια μεταβλητή τύπου IDictionaryEnumerator και καλεί τη μέθοδο GetEnumerator από τη συλλογή HashTable. Με τον απαριθμητή επέστρεψε, ο κώδικας απαριθμεί τα στοιχεία της συλλογής και χρησιμοποιεί τη μέθοδο κλειδιά του το HashTable για να κάνετε απαρίθμηση των κλειδιών.
  9. Στα παρακάτω βήματα, χρησιμοποιήστε τη μέθοδο καταργήστε την επιλογή για να καταργήσετε το HashTable:
    1. Προσθέστε ένα στοιχείο ελέγχου κουμπιού Form1 και αλλάξτε την ιδιότητα Text Απαλοιφή.
    2. Κάντε διπλό κλικ στο κουμπί και επικολλήστε τον ακόλουθο κώδικα στο συμβάν Button5_Click :
      MyTable.Clear();      MessageBox.Show("HashTable is now empty");

  10. Ακολουθήστε τα παρακάτω βήματα για να δημιουργήσετε και να εκτελέσετε την εφαρμογή:
    1. Κάντε κλικ στο κουμπί Προσθήκη στοιχείων. Σημειώστε ότι τρία αντικείμενα ατόμου προστίθενται στη συλλογή HashTable.
    2. Κάντε κλικ στην επιλογή λήψη στοιχείων. Σημειώστε ότι ο δεικτοδότης λαμβάνει τα στοιχεία στη συλλογή HashTable. Οι τρεις προστεθεί πρόσφατα στοιχεία εμφανίζονται.
    3. Κάντε κλικ στο κουμπί Κατάργηση στοιχείου. Σημειώστε ότι το στοιχείο στη θέση κλειδιού "Burris" διαγράφεται.
    4. Κάντε κλικ στην απαρίθμηση. Σημειώστε ότι IDictionaryEnumerator απαριθμεί τα στοιχεία στη συλλογή HashTable και η ιδιότητα κλειδιά από το HashTable επιστρέφει μια συλλογή Keys.
    5. Κάντε κλικ στο κουμπί Απαλοιφή. Σημειώστε ότι όλα τα στοιχεία καταργούνται από τη συλλογή HashTable.
Σημείωση Τις εταιρείες, οργανισμούς, προϊόντα, ονόματα τομέων, διευθύνσεις ηλεκτρονικού ταχυδρομείου, λογότυπα, άτομα, θέσεις και γεγονότων που αναφέρονται εδώ είναι φανταστικά. Καμία σχέση με την πραγματική εταιρεία, οργανισμό, προϊόν, όνομα τομέα, διεύθυνση ηλεκτρονικού ταχυδρομείου, λογότυπο, άτομο, θέσεις ή συμβάντα προορίζεται ούτε υπονοείται.
Ιδιότητες

Αναγνωριστικό άρθρου: 309357 - Τελευταία αναθεώρηση: 21 Ιαν 2017 - Αναθεώρηση: 1

Σχόλια