CodeGym /وبلاگ جاوا /Random-FA /نحوه ایجاد دیکشنری در جاوا
John Squirrels
مرحله
San Francisco

نحوه ایجاد دیکشنری در جاوا

در گروه منتشر شد
اگر نیاز به ایجاد دیکشنری در یک برنامه جاوا دارید، منطقی ترین راه برای حل این مشکل استفاده از ساختار داده دیکشنری است. این ساختار داده به شما امکان می دهد اطلاعات را به شکل "کلید - مقدار" ذخیره کنید. جاوا دارای یک کلاس دیکشنری خاص و همچنین نسل آن، Hashtable است . همچنین رابط Map و کلاس HashMap وجود دارد که جفت‌های کلید - مقدار را نیز ذخیره می‌کند. بنابراین راه های زیادی برای ایجاد دیکشنری جاوا وجود دارد.

ساختار داده فرهنگ لغت

بنابراین، ساختار داده Dictionary اطلاعات را به عنوان یک ترکیب کلید-مقدار ذخیره می کند. یعنی با هر مقداری یک کلید را مرتبط می کنیم (مثلاً می تواند id باشد) و این جفت را وارد فرهنگ لغت می کنیم. آدرس دادن یک عنصر از فرهنگ لغت، حذف، جستجو در فرهنگ لغت توسط کلید انجام می شود. به نظر می رسد سازماندهی با استفاده از چنین ساختار داده ای، به عنوان مثال، دفترچه تلفن، که در آن نام (کلید) با شماره تلفن (مقدار) مطابقت دارد، راحت باشد.

کلاس دیکشنری و پسوند آن

برای شروع، java.util.Dictionary <K, V> util.Dictionary یک کلاس انتزاعی است. این یک رابطه کلید-مقدار را نشان می دهد و شبیه نقشه کار می کند. با دادن یک کلید می توانید مقادیر را ذخیره کنید و در صورت نیاز می توانید مقدار را با استفاده از کلید آن بازیابی کنید. بنابراین، فهرستی از جفت کلید-مقدار است.
public abstract class Dictionary<K,V> extends Object
از آنجایی که این کلاس انتزاعی است، ما مستقیماً با آن کار نمی کنیم. دیکشنری دارای یک کلاس کودک مستقیم Hashtable است . بنابراین برای ایجاد دیکشنری در جاوا می توانید از Hashtable استفاده کنید . این کلاس یک جدول هش را پیاده سازی می کند که کلیدها را به مقادیر نگاشت می کند و هر شی غیر تهی را می توان به عنوان کلید یا مقدار استفاده کرد. در سلسله مراتب جاوا ، Hashtable دیکشنری را گسترش داده و Map را پیاده سازی می کند . بیایید یک مثال بزنیم. ما قصد داریم یک دیکشنری کلاسیک، یک دفترچه تلفن، بر اساس Hashtable ایجاد کنیم .
Dictionary phoneBook = new Hashtable();
اگر به این صورت بنویسیم باید برای برخی از عملیات ها نوع ریخته گری را اعمال کنیم. به عنوان مثال، برای استخراج کلید.
System.out.println(((Hashtable) phoneBook).keySet());
برای جلوگیری از این، می توانیم تغییر دهیم
Dictionary phoneBook = new Hashtable ();
بر روی
Hashtable phoneBook = new Hashtable ();
در مثال ما، برای وضوح، گزینه اول را ترک می کنیم.
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);
       }
   }
خروجی این است:
{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, 2077, 2071, 1298, 2178, 1871, 1871, 1871, 1870 =2178، ریکی مک برایت = 2001، آیوی بریگز = 1877}

HashMap به عنوان یک فرهنگ لغت

HashMap ، برخلاف Hashtable ، از نسل مستقیم Dictionary نیست . با این حال، به دلیل بسیاری از ویژگی ها، در بیشتر موارد بهتر است یک فرهنگ لغت با استفاده از HashMap ایجاد کنید . کلاس HashMap از نظر عملکرد بسیار شبیه به Hashtable است . تفاوت اصلی این است که روش های Hashtable همگام هستند، اما HashMap نه. همگام سازی در Hashtable عملکرد کد را کاهش می دهد. علاوه بر این، کلاس HashMap ، بر خلاف Hashtable ، امکان استفاده از null را به عنوان یک کلید (یک) و مجموعه ای از null را به عنوان مقادیر می دهد. در مورد ما، برنامه دقیقاً مشابه مثال بالا خواهد بود. تنها تفاوت در نوع مجموعه است. با این حال، این روش ترجیحی برای کار با دیکشنری ها در جاوا در بیشتر موارد است.
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);
   }

}
در اینجا خروجی است:
{Andrew Arnold=1298, Ivy Briggs=1877, Ricky McBright=2001, Johnny Walker=2178} 2178 1877 null true false [اندرو آرنولد, آیوی بریگز, ریکی مک برایت, جانی واکر] [1297, 18, 18, 1298, 187, 207 آیوی بریگز=1877، ریکی مک برایت=2001، جانی واکر=2178}
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION