CodeGym /Java Blog /अनियमित /जावा में डिक्शनरी कैसे बनाएं
John Squirrels
स्तर 41
San Francisco

जावा में डिक्शनरी कैसे बनाएं

अनियमित ग्रुप में प्रकाशित
यदि आपको जावा प्रोग्राम में एक डिक्शनरी बनाने की आवश्यकता है, तो इस समस्या को हल करने का सबसे तार्किक तरीका डिक्शनरी डेटा स्ट्रक्चर का उपयोग करना है। यह डेटा संरचना आपको "की-वैल्यू" के रूप में जानकारी संग्रहीत करने की अनुमति देती है। जावा में एक विशेष डिक्शनरी क्लास के साथ-साथ इसके वंश, हैशटेबल भी हैं । इसके अलावा मैप इंटरफ़ेस और हैश मैप क्लास भी है , जो "की-वैल्यू" जोड़े को भी स्टोर करता है। तो जावा डिक्शनरी बनाने के कई तरीके हैं।

शब्दकोश डेटा संरचना

इसलिए, डिक्शनरी डेटा स्ट्रक्चर जानकारी को की-वैल्यू कॉम्बिनेशन के रूप में स्टोर करता है। यही है, किसी भी मूल्य के साथ हम एक कुंजी को जोड़ते हैं (यह हो सकता है, उदाहरण के लिए, आईडी) और इस जोड़ी को शब्दकोश में दर्ज करें। शब्दकोश के एक तत्व को संबोधित करना, हटाना, शब्दकोश में खोजना कुंजी द्वारा किया जाता है। ऐसी डेटा संरचना का उपयोग करके व्यवस्थित करना सुविधाजनक लगता है, उदाहरण के लिए, एक टेलीफोन बुक, जहां नाम (कुंजी) फोन नंबर (मान) से मेल खाती है।

शब्दकोश वर्ग और उसका विस्तार

शुरू करने के लिए, java.util.Dictionary <K, V> util.Dictionary एक सार वर्ग है। यह कुंजी-मूल्य संबंध का प्रतिनिधित्व करता है और मानचित्र के समान कार्य करता है। एक कुंजी को देखते हुए आप मूल्यों को स्टोर कर सकते हैं और जब आवश्यक हो तो इसकी कुंजी का उपयोग करके मूल्य वापस प्राप्त कर सकते हैं। इस प्रकार, यह की-वैल्यू पेयर की एक सूची है।

public abstract class Dictionary<K,V> extends Object
चूँकि यह वर्ग अमूर्त है, हम इसके साथ सीधे काम नहीं करेंगे। डिक्शनरी में डायरेक्ट चाइल्ड क्लास हैशटेबल है । तो जावा में एक शब्दकोश बनाने के लिए आप हैशटेबल का उपयोग कर सकते हैं । यह वर्ग एक हैश तालिका को लागू करता है, जो कुंजियों को मानों में मैप करता है और किसी भी गैर-शून्य वस्तु को कुंजी या मान के रूप में उपयोग किया जा सकता है। जावा पदानुक्रम में हैशटेबल डिक्शनरी का विस्तार करता है और मैप को लागू करता है । आइए एक उदाहरण देते हैं। हम हैशटेबल पर आधारित एक क्लासिक डिक्शनरी, एक टेलीफोन बुक बनाने जा रहे हैं ।

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);
       }
   }
आउटपुट है:
{एंड्रयू अर्नोल्ड=1298, जॉनी वॉकर=2178, रिकी मैकब्राइट=2001, आइवी ब्रिग्स=1877} 1877 नल ट्रू [एंड्रयू अर्नोल्ड, जॉनी वॉकर, रिकी मैकब्राइट, आइवी ब्रिग्स] [1298, 2178, 2001, 1877] 4 {जॉनी वॉकर =2178, रिकी मैकब्राइट=2001, आइवी ब्रिग्स=1877}

शब्दकोश के रूप में हैश मैप

हैशटेबल के विपरीत हैश मैप , शब्दकोश का प्रत्यक्ष वंशज नहीं है । हालाँकि, कई विशेषताओं के कारण, ज्यादातर मामलों में हैश मैप का उपयोग करके एक शब्दकोश बनाना बेहतर होता है । हैश मैप वर्ग कार्यक्षमता में हैशटेबल के समान है । मुख्य अंतर यह है कि हैशटेबल के तरीके सिंक्रनाइज़ हैं, लेकिन हैश मैप नहीं हैं। हैशटेबल में सिंक्रोनाइज़ेशन कोड के प्रदर्शन को कम करता है। इसके अलावा, हैशटेबल के विपरीत हैश मैप क्लास, कुंजी (एक) के रूप में अशक्त और मान के रूप में अशक्त के सेट के उपयोग की अनुमति देता है। हमारे मामले में, कार्यक्रम ऊपर दिए गए उदाहरण के समान ही दिखाई देगा। अंतर केवल संग्रह के प्रकार में है। हालाँकि, ज्यादातर मामलों में जावा में शब्दकोशों के साथ काम करने का यह पसंदीदा तरीका है।

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

}
यहाँ आउटपुट है:
{एंड्रयू अर्नोल्ड = 1298, आइवी ब्रिग्स = 1877, रिकी मैकब्राइट = 2001, जॉनी वॉकर = 2178} 2178 1877 नल सच झूठ [एंड्रयू अर्नोल्ड, आइवी ब्रिग्स, रिकी मैकब्राइट, जॉनी वॉकर] [1298, 1877, 2001, 2178] 4 { आइवी ब्रिग्स=1877, रिकी मैकब्राइट=2001, जॉनी वॉकर=2178}
टिप्पणियां
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION