Bagaimana bekerja dengan kumpulan HashTable di Visual C#

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 309357 - Melihat produk di mana artikel ini berlaku.
Untuk versi Microsoft Visual Basic .NET Pasal ini, lihat 307933.
Perbesar semua | Perkecil semua

Pada Halaman ini

Ringkasan

Artikel langkah-langkah ini menunjukkan Anda bagaimana menggunakan kumpulan HashTable. Karena hashing menghilangkan kebutuhan untuk mahal Telisik data untuk mengambil data, Anda dapat menggunakan hashing untuk efisien mengambil data. Hashing menggunakan nilai bukti kunci sendiri untuk Telisik data.

Base Class Libraries menawarkan HashTable kelas yang didefinisikan dalam System.Collections namespace sehingga Anda tidak perlu kode Daftar Tabel hash Anda sendiri.

Langkah-langkah untuk membangun sampel

Koleksi HashTable toko sepasang (kunci, nilai) dan menggunakan bukti kunci hash dan mendapatkan lokasi penyimpanan. bukti kunci tetap dan tidak dapat memiliki entri duplikat dalam HashTable. Sampel ini menggunakan beberapa contoh kelas orang sederhana untuk menyimpan di HashTable. Nama terakhir digunakan sebagai bukti kunci.
  1. Buka Microsoft Visual Studio, dan menciptakan proyek aplikasi bentuk Windows di Visual C#. Form1 ditambahkan ke proyek secara asali.
  2. Dalam solusi Explorer, klik kanan-atas nama proyek, arahkan ke Add, dan kemudian klik kelas untuk menambahkan modul kelas. Kelas 1 ditambahkan ke proyek secara asali.
  3. Ganti kode dalam modul kelas 1 dengan kode berikut:
     public class Person
    {
    	public string Fname, Lname;
    
    	public Person(string FirstName, string LastName)
    	{
    		Fname = FirstName;
    		Lname = LastName;
    	}
    
    	public override string ToString()
    	{
    		return Fname + " " + Lname;
    	}
    }
    						
    Kelas orang memiliki satu konstruktor yang mengambil parameter nama depan dan nama belakang dan menetapkan parameter ini ke variabel lokal. Fungsi ToString mengabaikan ToString dari objek kelas untuk kembali Fname dan Lname menggabungkan bersama-sama.
  4. Buat level format Hashtable objek, dan menyatakan ketiga variabel tipe orang. Tambahkan kode berikut untuk Form1 kelas:
    <?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. Pada langkah berikutnya, menggunakan metode Tambahkan objek Hashtable untuk menambahkan tiga orang objek ke Hashtable di coba-catch blok. Coba-catch blok menangkap pengecualian dan menampilkan pesan jika ada duplikat kunci:
    1. Tempatkan tombol tekan kontrol pada Form1, dan mengubah properti teks untuk Menambahkan item.
    2. Double-klik tombol tekan untuk membuka jendela kode nya, dan paste kode berikut dalam acara 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. Objek Hashtable menyediakan pengindeks. Pada langkah berikutnya, indeks dengan bukti kunci untuk mengakses nilai yang disimpan di lokasi terpotong:
    1. Tambahkan tombol tekan kontrol untuk Form1, dan mengubah nama properti untuk Mendapatkan barang-barang.
    2. Double-klik tombol tekan, dan paste kode berikut dalam acara 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. Pada langkah berikutnya, menggunakan metode Hapus untuk menghapus satu item dari koleksi HashTable:
    1. Tambahkan tombol tekan kontrol untuk Form1, dan mengubah properti teks untuk Menghapus Item.
    2. Double-klik tombol tekan, dan paste kode berikut dalam acara 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. Pada langkah berikutnya, menghitung item yang disimpan dalam HashTable koleksi:
    1. Tambahkan tombol tekan kontrol untuk Form1, dan mengubah properti teks untuk Menghitung.
    2. Double-klik tombol tekan, dan paste kode berikut dalam acara 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?>
      Kode ini menyatakan sebuah variabel jenis IDictionaryEnumerator dan memanggil metode GetEnumerator koleksi HashTable. Dengan Pencacah kembali, kode membilang melalui item dalam koleksi dan menggunakan metode HashTablebukti kunci untuk menghitung melalui tombol tekan.
  9. Pada langkah berikutnya, menggunakan metode yang jelas untuk menghapus HashTable:
    1. Tambahkan tombol tekan kontrol untuk Form1, dan mengubah properti teks untuk Jelas.
    2. Double-klik tombol tekan, dan paste kode berikut dalam acara Button5_Click :
      MyTable.Clear();
            MessageBox.Show("HashTable is now empty");
      						
  10. Ikuti langkah-langkah untuk membangun dan menjalankan aplikasi:
    1. Klik Add item. Dicatat bahwa tiga orang objek yang ditambahkan ke koleksi HashTable.
    2. Klik Dapatkan item. Catatan bahwa indexer mendapatkan item dalam koleksi HashTable. Tiga baru ditambahkan item yang ditampilkan.
    3. Klik Hapus Item. Catatan bahwa item di lokasi bukti kunci "Burris" dihapus.
    4. Klik menghitung. Perhatikan bahwa IDictionaryEnumerator membilang melalui item dalam koleksi HashTable, dan milik bukti kunci HashTable kembali koleksi bukti kunci.
    5. Klik jelas. Perhatikan bahwa semua item yang dihapus dari kumpulan HashTable.
Catatan Contoh perusahaan, organisasi, produk, nama domain, alamat penyuratan e-mail, logo, orang, tempat, dan peristiwa-peristiwa yang digambarkan di sini adalah rekaan. Tidak ada hubungannya dengan setiap perusahaan nyata, organisasi, produk, nama domain, alamat penyuratan email, logo, orang, tempat atau peristiwa dimaksudkan atau harus dapat disimpulkan.

Properti

ID Artikel: 309357 - Kajian Terakhir: 21 April 2013 - Revisi: 4.0
Berlaku bagi:
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# 2005
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Kata kunci: 
kbhowtomaster kbmt KB309357 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan oleh perangkat lunak penerjemahan mesin Microsoft, dan mungkin telah diedit oleh Masyarakat Microsoft melalui teknologi CTF dan bukan oleh seorang penerjemah profesional. Microsoft menawarkan baik artikel yang diterjemahkan oleh manusia maupun artikel hasil editan terjemahan oleh mesin/komunitas, sehingga Anda dapat mengakses semua artikel di Sentra Pengetahuan yang kami miliki dalam berbagai bahasa. Namun artikel hasil editan mesin atau bahkan komunitas tidak selalu sempurna. Artikel ini dapat mengandung kesalahan dalam hal kosa kata, sintaksis atau tatabahasa, sangat mirip dengan penutur asing yang membuat kekeliruan ketika berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab atas ketidakakuratan, kesalahan atau kerugian apa pun akibat dari kekeliruan dalam penerjemahan isi atau penggunaannya oleh pelanggan kami. Microsoft juga akan senantiasa memperbarui perangkat lunak penerjemahan mesin dan alat untuk menyempurnakan Editan Hasil Penerjemahan Mesin.
Klik disini untuk melihat versi Inggris dari artikel ini: 309357

Berikan Masukan

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com