CodeGym/Java Blogu/Rastgele/Java'da bir sözlük nasıl oluşturulur?
John Squirrels
Seviye
San Francisco

Java'da bir sözlük nasıl oluşturulur?

grupta yayınlandı
Bir Java programında sözlük oluşturmanız gerekiyorsa bu sorunu çözmenin en mantıklı yolu sözlük veri yapısını kullanmaktır. Bu veri yapısı, bilgileri "anahtar - değer" biçiminde saklamanıza olanak tanır. Java'nın hashtable sınıfının yanı sıra özel bir Dictionary sınıfı vardır . Ayrıca , "anahtar - değer" çiftlerini de depolayan Harita arayüzü ve HashMap sınıfı vardır . Dolayısıyla bir Java sözlüğü oluşturmanın birçok yolu vardır.

Sözlük veri yapısı

Bu nedenle, Sözlük veri yapısı bilgileri bir anahtar-değer kombinasyonu olarak depolar. Yani, anahtarı herhangi bir değerle ilişkilendiririz (örneğin, id olabilir) ve bu çifti sözlüğe gireriz. Sözlüğün bir elemanına adresleme, silme, sözlükte arama tuşu ile yapılır. Adın (anahtarın) telefon numarasına (değere) karşılık geldiği bir telefon rehberi gibi bu tür bir veri yapısını kullanarak düzenlemek uygun görünmektedir.

Sözlük sınıfı ve uzantısı

Öncelikle java.util.Dictionary <K, V> util.Dictionary soyut bir sınıftır. Bir anahtar-değer ilişkisini temsil eder ve bir haritaya benzer şekilde çalışır. Bir anahtar verildiğinde, değerleri saklayabilir ve gerektiğinde anahtarını kullanarak değeri geri alabilirsiniz. Böylece, anahtar-değer çiftinin bir listesidir.
public abstract class Dictionary<K,V> extends Object
Bu sınıf soyut olduğu için onunla doğrudan çalışmayacağız. Sözlüğün doğrudan bir Hashtable alt sınıfı vardır . Java'da bir sözlük oluşturmak için Hashtable kullanabilirsiniz . Bu sınıf, anahtarları değerlerle eşleyen ve boş olmayan herhangi bir nesnenin anahtar veya değer olarak kullanılabileceği bir karma tablo uygular. Java hiyerarşisinde Hashtable, Dictionary öğesini genişletir ve Map öğesini uygular . Bir örnek verelim. Hashtable tabanlı klasik bir sözlük, telefon rehberi oluşturacağız .
Dictionary phoneBook = new Hashtable();
Bu şekilde yazarsak bazı işlemler için tip dökümü uygulamalıyız. Örneğin, bir anahtar çıkarma için.
System.out.println(((Hashtable) phoneBook).keySet());
Bunu önlemek için değiştirebiliriz
Dictionary phoneBook = new Hashtable ();
üzerinde
Hashtable phoneBook = new Hashtable ();
Örneğimizde, netlik için ilk seçeneği bırakacağız.
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);
       }
   }
Çıktı:
{Andrew Arnold=1298, Johnny Walker=2178, Ricky McBright=2001, Ivy Briggs=1877} 1877 null true [Andrew Arnold, Johnny Walker, Ricky McBright, Ivy Briggs] [1298, 2178, 2001, 1877] 4 {Johnny Walker =2178, Ricky McBright=2001, Ivy Briggs=1877}

Sözlük olarak HashMap

HashMap , Hashtable'ın aksine, Dictionary'nin doğrudan bir alt öğesi değildir . Ancak birçok özellik nedeniyle çoğu durumda HashMap kullanarak bir sözlük oluşturmak daha iyidir . HashMap sınıfı , işlevsellik açısından Hashtable'a çok benzer . Ana fark, Hashtable yöntemlerinin senkronize edilmiş olması, ancak HashMap'in senkronize olmamasıdır. Hashtable'daki senkronizasyon, kodun performansını düşürür. Ayrıca, Hashtable'dan farklı olarak HashMap sınıfı, bir anahtar (bir) olarak null ve değer olarak bir dizi null kullanımına izin verir. Bizim durumumuzda, program tam olarak yukarıdaki örnekle aynı görünecektir. Tek fark koleksiyonun türündedir. Ancak çoğu durumda Java'da sözlüklerle çalışmanın tercih edilen yolu budur.
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);
   }

}
İşte çıktı:
{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, 2178] 4 { Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178}
Yorumlar
  • Popüler
  • Yeni
  • Eskimiş
Yorum bırakmak için giriş yapmalısınız
Bu sayfada henüz yorum yok