CodeGym /Blog Java /rawak /Cara membuat kamus dalam Java
John Squirrels
Tahap
San Francisco

Cara membuat kamus dalam Java

Diterbitkan dalam kumpulan
Jika anda perlu mencipta kamus dalam program Java, cara paling logik untuk menyelesaikan masalah ini ialah menggunakan struktur data kamus. Struktur data ini membolehkan anda menyimpan maklumat dalam bentuk "kunci - nilai". Java mempunyai kelas Kamus khas serta keturunannya, Hashtable . Terdapat juga antara muka Peta dan kelas HashMap , yang juga menyimpan pasangan "kunci - nilai". Jadi terdapat banyak cara untuk mencipta kamus Java.

Struktur data kamus

Jadi, struktur data Kamus menyimpan maklumat sebagai gabungan nilai kunci. Iaitu, dengan sebarang nilai kami mengaitkan kunci (ia boleh, sebagai contoh, id) dan masukkan pasangan ini ke dalam kamus. Menangani elemen kamus, memadam, mencari dalam kamus dilakukan oleh kunci. Nampaknya mudah untuk mengatur menggunakan struktur data sedemikian, sebagai contoh, buku telefon, di mana nama (kunci) sepadan dengan nombor telefon (nilai).

Kelas kamus dan sambungannya

Sebagai permulaan, java.util.Dictionary <K, V> util.Dictionary ialah kelas abstrak. Ia mewakili hubungan nilai kunci dan berfungsi serupa dengan peta. Memandangkan kunci anda boleh menyimpan nilai dan apabila diperlukan boleh mendapatkan semula nilai menggunakan kuncinya. Oleh itu, ia adalah senarai pasangan nilai kunci.

public abstract class Dictionary<K,V> extends Object
Oleh kerana kelas ini adalah abstrak, kami tidak akan bekerja dengannya secara langsung. Kamus mempunyai Hashtable kelas anak langsung . Jadi untuk mencipta kamus dalam Java anda boleh menggunakan Hashtable . Kelas ini melaksanakan jadual cincang, yang memetakan kunci kepada nilai dan sebarang objek bukan nol boleh digunakan sebagai kunci atau sebagai nilai. Dalam hierarki Java Hashtable memanjangkan Kamus dan melaksanakan Map . Mari kita beri contoh. Kami akan mencipta kamus klasik, buku telefon, berdasarkan Hashtable .

Dictionary phoneBook = new Hashtable();
Jika kita menulis dengan cara ini, kita harus menggunakan pemutus jenis untuk beberapa operasi. Contohnya, untuk pengekstrakan kunci.

System.out.println(((Hashtable) phoneBook).keySet());
Untuk mengelakkan ini, kita boleh berubah

Dictionary phoneBook = new Hashtable ();
pada

Hashtable phoneBook = new Hashtable ();
Dalam contoh kami, untuk kejelasan, kami akan meninggalkan pilihan 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 ialah:
{Andrew Arnold=1298, Johnny Walker=2178, Ricky McBright=2001, Ivy Briggs=1877} 1877 batal benar [Andrew Arnold, Johnny Walker, Ricky McBright, Ivy Briggs] [1298, 2178, 2001, 4 {Johnny Walker] =2178, Ricky McBright=2001, Ivy Briggs=1877}

HashMap sebagai kamus

HashMap , tidak seperti Hashtable , bukan keturunan langsung Kamus . Walau bagaimanapun, disebabkan banyak ciri, dalam kebanyakan kes adalah lebih baik untuk mencipta kamus menggunakan HashMap . Kelas HashMap sangat serupa dalam fungsi dengan Hashtable . Perbezaan utama ialah kaedah Hashtable disegerakkan , tetapi HashMap tidak. Penyegerakan dalam Hashtable mengurangkan prestasi kod. Di samping itu, kelas HashMap , tidak seperti Hashtable, membenarkan penggunaan null sebagai kunci (satu) dan satu set null sebagai nilai. Dalam kes kami, program akan kelihatan sama seperti contoh di atas. Perbezaannya hanya pada jenis koleksi. Walau bagaimanapun, ini adalah cara pilihan untuk bekerja dengan kamus di Jawa dalam kebanyakan kes.

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);
   }

}
Berikut adalah outputnya:
{Andrew Arnold=1298, Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178} 2178 1877 null true false [Andrew Arnold, Ivy Briggs, Ricky McBright, Johnny Walker] [1298, 1877, 2001], 4 Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178}
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION