C# Hashtable dengan Contoh
โก Ringkasan Cerdas
Hashtable di C# adalah koleksi dari namespace System.Collections yang menyimpan data sebagai pasangan kunci-nilai, di mana setiap kunci unik dipetakan ke suatu nilai dan kunci tersebut menyediakan pencarian cepat untuk nilai yang tersimpan.

Apa itu Hashtable di C#?
Tabel hash adalah koleksi khusus yang digunakan untuk menyimpan item nilai kunci. Jadi, alih-alih hanya menyimpan satu nilai seperti tumpukan, daftar array, dan antrian, tabel hash menyimpan 2 nilai. 2 nilai ini membentuk elemen tabel hash.
Di bawah ini adalah beberapa contoh tampilan nilai tabel hash.
{ "001" , ".Net" }
{ "002" , ".C#" }
{ "003" , "ASP.Net" }
Di atas kami memiliki 3 pasangan nilai kunci. Kunci setiap elemen masing-masing adalah 001, 002 dan 003. Nilai dari setiap pasangan nilai kunci adalah โ.Bersihโ, โC#โ dan โASP.Netโ masing-masing.
Mari kita lihat operasi yang tersedia untuk koleksi Hashtable secara lebih detail.
Deklarasi Hashtable
Deklarasi Hashtable ditunjukkan di bawah ini. Hashtable dibuat dengan bantuan Tipe Data Hashtable. Kata kunci โbaruโ digunakan untuk membuat objek Hashtable. Objek tersebut kemudian ditugaskan ke variabel ht.
Hashtable ht = new Hashtable()
Menambahkan elemen ke Hashtable
Metode Tambah digunakan untuk menambahkan elemen ke antre. Sintaks umum dari pernyataan tersebut diberikan di bawah ini
HashTable.add("key","value")
Contoh 1:
Ingatlah bahwa setiap elemen tabel hash terdiri dari 2 nilai, satu adalah kuncinya, dan yang lainnya adalah nilainya.
Sekarang, mari kita lihat ini berfungsi pada tingkat kode. Semua kode yang disebutkan di bawah akan ditulis ke aplikasi Konsol kami.
Kode akan ditulis ke file Program.cs kami. Dalam program di bawah ini, kita akan menulis kode untuk melihat bagaimana kita dapat menggunakan metode yang disebutkan di atas.
Untuk saat ini dalam contoh kita, kita hanya akan melihat bagaimana kita dapat membuat tabel hash, menambahkan elemen ke tabel hash dan menampilkannya sesuai kebutuhan.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); ICollection keys = ht.Keys; foreach (String k in keys) { Console.WriteLine(ht[k]); } Console.ReadKey(); } } }
Code Penjelasan:-
- Pertama, kita mendeklarasikan variabel hashtable menggunakan tipe data Hashtable dengan menggunakan kata kunci โBaruโ. Nama variabel yang didefinisikan adalah 'ht'.
- Kami kemudian menambahkan elemen ke tabel hash menggunakan metode Tambah. Ingatlah bahwa kita perlu menambahkan elemen kunci dan nilai saat menambahkan sesuatu ke tabel hash.
- Tidak ada cara langsung untuk menampilkan elemen tabel hash.
- Untuk menampilkan tabel hash, pertama-tama kita perlu mendapatkan daftar kunci (001, 002 dan 003) dari tabel hash.
- Ini dilakukan melalui antarmuka ICollection. Ini adalah tipe data khusus yang dapat digunakan untuk menyimpan kunci koleksi tabel hash. Kami kemudian menetapkan kunci koleksi hashtable ke variabel 'kunci'.
- Selanjutnya untuk setiap nilai kunci, kita mendapatkan nilai terkait di tabel hash dengan menggunakan pernyataan ht[k].
Jika kode di atas dimasukkan dengan benar dan program dijalankan, output berikut akan ditampilkan.
Keluaran:
Mari kita lihat beberapa metode lain yang tersedia untuk tabel hash.
BerisiKey
Metode ini digunakan untuk melihat apakah ada kunci di Hashtable. Di bawah ini adalah sintaks umum dari pernyataan ini. Pernyataan akan mengembalikan nilai benar jika kuncinya ada, jika tidak maka akan mengembalikan nilai salah.
Hashtable.Containskey(key)
BerisiNilai
Metode ini digunakan untuk melihat apakah suatu Nilai ada di Hashtable. Di bawah ini adalah sintaks umum dari pernyataan ini. Pernyataan akan mengembalikan nilai benar jika Nilainya ada, jika tidak maka akan mengembalikan nilai salah.
Hashtable.ContainsValue(value)
Contoh 2:
Mari kita ubah kode di kita Aplikasi konsol untuk menunjukkan bagaimana kita dapat menggunakan metode โContainskeyโ dan โContainsValueโ.
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("001",".Net"); ht.Add("002","C#"); ht.Add("003","ASP.Net"); Console.WriteLine(ht.ContainsKey("001")); Console.WriteLine(ht.ContainsValue("C#")); Console.ReadKey(); } } }
Code Penjelasan:-
- Pertama, kita menggunakan metode ContentKey untuk melihat apakah kunci tersebut ada di tabel hash. Metode ini akan mengembalikan nilai true jika kunci ada di tabel hash. Metode ini harus mengembalikan nilai true karena kuncinya memang ada di tabel hash.
- Kami kemudian menggunakan metode ContentValue untuk melihat apakah nilainya ada di tabel hash. Metode ini akan mengembalikan 'benar' karena Nilai memang ada di tabel hash.
Jika kode di atas dimasukkan dengan benar dan program dijalankan, output berikut akan ditampilkan.
Keluaran:
Dari outputnya, Anda dapat melihat dengan jelas bahwa kunci dan nilai yang dicari ada di tabel hash.
Cara Melakukan Perulangan pada Hashtable C#
Contoh-contoh di atas membaca nilai melalui koleksi Keys, tetapi Hashtable dapat ditelusuri dengan cara yang lebih bersih. Sebuah perulangan foreach pada DictionaryEntry akan memberikan Anda kunci dan nilai dari setiap elemen secara bersamaan dalam satu kali proses, yang merupakan cara paling umum untuk membaca Hashtable.
Langkah 1) Buat sebuah Hashtable dan tambahkan tiga pasangan kunci-nilai ke dalamnya.
Langkah 2) Lakukan perulangan pada Hashtable dengan variabel DictionaryEntry, kemudian baca properti Key dan Value dari setiap entri.
using System; using System.Collections; namespace DemoApplication { class Program { static void Main(string[] args) { Hashtable ht = new Hashtable(); ht.Add("101", "Java"); ht.Add("102", "Python"); ht.Add("103", "Kotlin"); foreach (DictionaryEntry entry in ht) { Console.WriteLine(entry.Key + " - " + entry.Value); } Console.ReadKey(); } } }
Code Penjelasan:-
- Sebuah Hashtable bernama ht dibuat, dan tiga pasangan kunci-nilai dimasukkan dengan metode Add.
- Perulangan foreach menetapkan setiap elemen ke DictionaryEntry, yang properti Key dan Value-nya memperlihatkan dua bagian dari pasangan tersebut.
Saat program dijalankan, program akan mencetak setiap tombol beserta nilainya, misalnya 101 โ JavaKarena Hashtable tidak menyimpan urutan penyisipan, pasangan tersebut mungkin muncul dalam urutan yang berbeda dari saat ditambahkan. Untuk membaca hanya kuncinya, lakukan perulangan pada koleksi Keys, dan untuk membaca hanya nilainya, lakukan perulangan pada koleksi Values.
Metode dan Properti Hashtable C#
Kelas Hashtable menyediakan sejumlah kecil metode dan properti yang mencakup hampir semua tugas yang Anda perlukan, mulai dari menambahkan dan menghapus pasangan hingga memeriksa keanggotaan dan menghitung elemen. Anggota yang paling berguna tercantum di bawah ini.
| Anggota | Tipe | Deskripsi |
|---|---|---|
| Tambahkan(kunci, nilai) | metode | Menyisipkan pasangan kunci dan nilai baru; kunci harus unik. |
| Hapus(kunci) | metode | Menghapus elemen yang cocok dengan kunci yang ditentukan. |
| Jernih() | metode | Menghapus semua pasangan kunci-nilai dari Hashtable. |
| ContainsKey(key) | metode | Mengembalikan nilai true jika kunci yang diberikan ada. |
| ContainsValue(value) | metode | Mengembalikan nilai true jika nilai yang diberikan ada. |
| Menghitung | Milik | Mendapatkan jumlah pasangan kunci-nilai yang tersimpan. |
| Kunci-kunci | Milik | Mengembalikan koleksi semua kunci. |
| Nilai - Nilai | Milik | Mengembalikan kumpulan semua nilai. |
Karena setiap kunci di-hash, ContainsKey dan pengindeks menemukan elemen dalam waktu yang hampir konstan, itulah yang membuat Hashtable sangat berguna untuk pencarian cepat.
Perbedaan Antara Hashtable dan Dictionary di C#
Hashtable dan Dictionary sama-sama menyimpan pasangan kunci-nilai, dan keduanya termasuk dalam keluarga besar C#. koleksiPerbedaan pentingnya adalah keamanan tipe, dan perbedaan itulah yang menentukan mana yang harus Anda gunakan dalam kode baru.
- Jenis keamanan: Hashtable menyimpan setiap kunci dan nilai sebagai sebuah objek, sedangkan Dictionary menyimpan setiap kunci dan nilai sebagai sebuah objek. Bersifat generik, sehingga kompiler memeriksa tipe yang Anda gunakan.
- Ruang nama: Hashtable berada di System.Collections, sedangkan Dictionary berada di System.Collections.Generic.
- Boxing: Hashtable menyimpan tipe nilai seperti int dalam sebuah kotak, sedangkan Dictionary generik menyimpannya secara langsung dan menghindari biaya tersebut.
- Kinerja: Dictionary biasanya lebih cepat karena tidak memerlukan konversi tipe data dari objek saat membaca nilai.
- Keamanan benang: Hashtable menawarkan SyncPembungkus yang dikronisasi untuk satu penulis dengan banyak pembaca, sementara kode konkuren biasanya memilih ConcurrentDictionary.
Untuk proyek baru apa pun, Dictionary generik adalah pilihan yang direkomendasikan, dan Hashtable non-generik sebagian besar muncul dalam kode lama.




