Tabel hash juga dikenal sebagai daftar distribusi, yang merupakan struktur kelas koleksi yang digunakan untuk menyimpan objek grup.
Apa itu tabel hash
Baik array dan vektor dapat menyimpan objek, tetapi posisi penyimpanan objek adalah acak, yaitu, tidak ada koneksi yang diperlukan antara objek itu sendiri dan posisi penyimpanannya. Ketika Anda ingin menemukan objek, Anda hanya dapat membandingkan dengan setiap elemen dalam urutan tertentu (seperti pencarian berurutan atau dua titik pencarian). Ketika jumlah elemen dalam array atau vektor besar, efisiensi pencarian akan berkurang secara signifikan.
Metode penyimpanan yang efektif adalah tidak dibandingkan dengan elemen lain, dan catatan yang dapat diperoleh pada suatu waktu dapat diperoleh. Ini memerlukan membangun hubungan yang sesuai spesifik antara posisi penyimpanan objek dan atribut kunci objek (diatur ke k) untuk sesuai dengan setiap objek yang sesuai dengan posisi penyimpanan yang unik. Saat mencari, cukup hitung nilai f (k) berdasarkan atribut kunci dari objek yang akan diperiksa. Jika objek ini ada dalam koleksi, harus pada posisi penyimpanan f (k), jadi tidak perlu dibandingkan dengan elemen lain dalam set. Disebut hubungan yang sesuai ini sebagai metode hash, dan tabel yang ditetapkan sesuai dengan ide ini adalah tabel hash.
Java menggunakan kategori hashtable untuk mencapai tabel hash.
• Kapasitas: Kapasitas hashtable tidak diperbaiki, dan kapasitas objek juga dapat meningkat secara otomatis.
• Kunci (kunci): Setiap objek penyimpanan membutuhkan kata kunci. Semua kata kunci dalam hashtable adalah unik.
• Kode Hash: Jika Anda ingin menyimpan objek ke Hashtable, Anda perlu memetakan kunci kata kunci ke data integer untuk menjadi kode kunci hash.
• Item: Masing -masing hashtable memiliki dua domain, yang merupakan kunci domain kata kunci dan nilai domain nilai (objek penyimpanan). Baik kunci dan nilai dapat berupa objek tipe objek, tetapi tidak bisa kosong.
• Faktor beban: Faktor pengisian diwakili oleh kepenuhan tabel hash, dan nilainya sama dengan panjang jumlah elemen daripada tabel hash di atas.
Penggunaan tabel hash
Ada tiga bentuk utama metode konstruksi untuk tabel hash:
Hashtable (); // konstruktor default, kapasitas awal adalah 101, faktor pengisian maksimum 0,75
Hashtable (kapasitas int);
Hashtable (kapasitas int, float loadfactor)
Metode utama tabel hash ditunjukkan pada Tabel 8-6.
Tabel 8-6 Seringkali metode yang ditentukan oleh definisi tabel hash
metode | Fungsi |
---|---|
void clear () | Ulang -ulang dan hapus tabel hash |
Boolean berisi (nilai objek) | Tentukan apakah tabel hash berisi objek yang diberikan, jika ada pengembalian yang benar, jika tidak yang salah akan dikembalikan |
Boolean berisiKey (kunci objek) | Tentukan apakah tabel hash berisi kata kunci yang diberikan, jika ada pengembalian ke true, jika tidak salah akan dikembalikan |
boolean isempty () | Konfirmasikan apakah tabel hash kosong, jika Anda kembali ke true, jika tidak yang salah akan dikembalikan |
Objek dapatkan (kunci objek) | Objek untuk mendapatkan kata kunci yang sesuai, jika tidak ada pengembalian nol |
void rehash () | Tidak peduli howh, tabel hash ekspansi dapat menghemat lebih banyak elemen. |
Object Put (Kunci Objek, Nilai Objek) | Simpan objek ke tabel hash dengan kata kunci yang diberikan. |
Objek hapus (kunci objek) | Hapus objek yang sesuai dengan fase kata kunci dari tabel hash, jika objek tidak kembali ke null |
ukuran int () | Kembali ke ukuran tabel hash |
String tostring () | Mengubah konten tabel hash menjadi string |
Penciptaan tabel hash juga dapat diimplementasikan melalui operator baru. Pernyataannya adalah:
Havetable memiliki = hashtable baru ();
contoh:
[Contoh 8-12] Melintasi tabel hash.
// ************ EP8_12.java *********************************** ********************************************** ********************* Java.util.*; Has.put (satu ", bilangan bulat baru (1)); ", double baru (12.3)); set s = has.keyset (); for (iterator <string> i = s.iterator (); i.hasnext ();) {System.out.println (has.get ( I.next ()));}}}
Jalankan Hasil:
21312.3