CodeGym /Java Blog /Acak /Cara membuat kamus di Java
John Squirrels
Level 41
San Francisco

Cara membuat kamus di Java

Dipublikasikan di grup Acak
Jika Anda perlu membuat kamus dalam program Java, cara paling logis untuk mengatasi masalah ini adalah dengan menggunakan struktur data kamus. Struktur data ini memungkinkan Anda menyimpan informasi dalam bentuk "kunci - nilai". Java memiliki kelas Kamus khusus serta turunannya, Hashtable . Juga ada antarmuka Peta dan kelas HashMap , yang juga menyimpan pasangan "kunci - nilai". Jadi ada banyak cara untuk membuat kamus Java.

Struktur data kamus

Jadi, struktur data Kamus menyimpan informasi sebagai kombinasi nilai kunci. Artinya, dengan nilai apa pun kami mengaitkan kunci (bisa jadi, misalnya, id) dan memasukkan pasangan ini ke dalam kamus. Mengatasi elemen kamus, menghapus, mencari di kamus dilakukan dengan kunci. Tampaknya nyaman untuk mengatur menggunakan struktur data seperti itu, misalnya buku telepon, di mana nama (kunci) sesuai dengan nomor telepon (nilai).

Kelas kamus dan ekstensinya

Sebagai permulaan, java.util.Dictionary <K, V> util.Dictionary adalah kelas abstrak. Ini mewakili hubungan nilai kunci dan bekerja mirip dengan peta. Diberi kunci, Anda dapat menyimpan nilai dan bila diperlukan dapat mengambil kembali nilai menggunakan kuncinya. Jadi, ini adalah daftar pasangan kunci-nilai.

public abstract class Dictionary<K,V> extends Object
Karena kelas ini abstrak, kita tidak akan mengerjakannya secara langsung. Kamus memiliki kelas anak langsung Hashtable . Jadi untuk membuat kamus di Java Anda bisa menggunakan Hashtable . Kelas ini mengimplementasikan tabel hash, yang memetakan kunci ke nilai dan objek non-null apa pun dapat digunakan sebagai kunci atau sebagai nilai. Dalam hierarki Java, Hashtable memperluas Dictionary dan mengimplementasikan Map . Mari kita beri contoh. Kami akan membuat kamus klasik, buku telepon, berdasarkan Hashtable .

Dictionary phoneBook = new Hashtable();
Jika kita menulis seperti ini, kita harus menerapkan pengecoran tipe untuk beberapa operasi. Misalnya, untuk ekstraksi kunci.

System.out.println(((Hashtable) phoneBook).keySet());
Untuk menghindari ini, kita bisa berubah

Dictionary phoneBook = new Hashtable ();
pada

Hashtable phoneBook = new Hashtable ();
Dalam contoh kami, untuk kejelasan, kami akan meninggalkan opsi pertama.

import java.util.Dictionary;
import java.util.Hashtable;

public class DictionaryDemo {

       public static void main(String[] args) {

           Dictionary phoneBook = new Hashtable();

           // put() method
           phoneBook.put("Johnny Walker", "2178");
           phoneBook.put("Andrew Arnold", "1298");
           phoneBook.put("Ivy Briggs", "1877");
           phoneBook.put("Ricky McBright", "2001");

           //print out Hashtable out
           System.out.println(phoneBook);

           //let's get the value using the key
           System.out.println(phoneBook.get("Ivy Briggs"));
           //there's no such key in out Hashtable
           System.out.println(phoneBook.get("Sol Frank"));

           //Is there a record with the "Johnny Walker" key?
           System.out.println(((Hashtable) phoneBook).containsKey("Johnny Walker"));
           //all keys of the Hashtable
           System.out.println(((Hashtable) phoneBook).keySet());
           //values from Hashtable
           System.out.println(((Hashtable) phoneBook).values());

           //the quantity of records
           System.out.println(phoneBook.size());
           //removing one record
           phoneBook.remove("Andrew Arnold");
           System.out.println(phoneBook);
       }
   }
Outputnya adalah:
{Andrew Arnold=1298, Johnny Walker=2178, Ricky McBright=2001, Ivy Briggs=1877} 1877 null benar [Andrew Arnold, Johnny Walker, Ricky McBright, Ivy Briggs] [1298, 2178, 2001, 1877] 4 {Johnny Walker =2178, Ricky McBright=2001, Ivy Briggs=1877}

HashMap sebagai kamus

HashMap , tidak seperti Hashtable , bukan turunan langsung dari Dictionary . Namun, karena banyaknya fitur, dalam banyak kasus lebih baik membuat kamus menggunakan HashMap . Kelas HashMap sangat mirip fungsinya dengan Hashtable . Perbedaan utamanya adalah metode Hashtable disinkronkan , tetapi HashMap tidak. Sinkronisasi di Hashtable menurunkan kinerja kode. Selain itu, kelas HashMap , tidak seperti Hashtable, memungkinkan penggunaan null sebagai kunci (satu) dan sekumpulan null sebagai nilai. Dalam kasus kami, program akan terlihat persis sama dengan contoh di atas. Satu-satunya perbedaan adalah pada jenis koleksinya. Namun, ini adalah cara yang disukai untuk bekerja dengan kamus di Jawa dalam banyak kasus.

import java.util.HashMap;
import java.util.Map;

public class DictionaryDemo2 {

   public static void main(String[] args) {

       Map<String, String> phoneBook = new HashMap<String,String>();
      
       phoneBook.put("Johnny Walker", "2178");
       phoneBook.put("Andrew Arnold", "1298");
       phoneBook.put("Ivy Briggs", "1877");
       phoneBook.put("Ricky McBright", "2001");
      
       System.out.println(phoneBook);
      
       System.out.println(phoneBook.get("Johnny Walker"));
       System.out.println(phoneBook.get("Ivy Briggs"));
       System.out.println(phoneBook.get("Unknown Friend"));
      
       System.out.println(phoneBook.containsKey("Johnny Walker"));
       System.out.println(phoneBook.containsKey("Unknown Friend"));

       System.out.println(phoneBook.keySet());
       System.out.println(phoneBook.values());

       System.out.println(phoneBook.size());

       phoneBook.remove("Andrew Arnold");

       System.out.println(phoneBook);
   }

}
Inilah hasilnya:
{Andrew Arnold=1298, Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178} 2178 1877 null benar salah [Andrew Arnold, Ivy Briggs, Ricky McBright, Johnny Walker] [1298, 1877, 2001, 2178] 4 { Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178}
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION