CodeGym /Java Blog /यादृच्छिक /Java मध्ये शब्दकोश कसा तयार करायचा
John Squirrels
पातळी 41
San Francisco

Java मध्ये शब्दकोश कसा तयार करायचा

यादृच्छिक या ग्रुपमध्ये प्रकाशित केले
तुम्हाला जावा प्रोग्राममध्ये शब्दकोश तयार करायचा असल्यास, या समस्येचे निराकरण करण्याचा सर्वात तार्किक मार्ग म्हणजे शब्दकोश डेटा संरचना वापरणे. ही डेटा रचना तुम्हाला "की - व्हॅल्यू" या स्वरूपात माहिती संग्रहित करण्याची परवानगी देते. Java मध्ये एक विशेष शब्दकोश वर्ग तसेच त्याचे वंशज, हॅशटेबल आहे . तसेच मॅप इंटरफेस आणि हॅशमॅप क्लास आहे , जो "की - व्हॅल्यू" जोड्या देखील संग्रहित करतो. त्यामुळे जावा शब्दकोश तयार करण्याचे अनेक मार्ग आहेत.

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

तर, डिक्शनरी डेटा स्ट्रक्चर माहितीचे मुख्य-मूल्य संयोजन म्हणून संग्रहित करते. म्हणजेच, कोणत्याही मूल्यासह आम्ही एक की संबद्ध करतो (ती असू शकते, उदाहरणार्थ, आयडी) आणि ही जोडी शब्दकोशात प्रविष्ट करा. शब्दकोशातील घटकाला संबोधित करणे, हटवणे, शब्दकोशात शोधणे हे कीद्वारे केले जाते. अशा डेटा स्ट्रक्चरचा वापर करून व्यवस्थापित करणे सोयीचे वाटते, उदाहरणार्थ, टेलिफोन बुक, जेथे नाव (की) फोन नंबर (मूल्य) शी संबंधित आहे.

शब्दकोश वर्ग आणि त्याचा विस्तार

सुरुवातीला, java.util.Dictionary <K, V> util.Dictionary हा एक अमूर्त वर्ग आहे. हे मुख्य-मूल्य संबंध दर्शवते आणि नकाशासारखे कार्य करते. एक की दिल्यास तुम्ही मूल्ये साठवू शकता आणि जेव्हा आवश्यक असेल तेव्हा तिची की वापरून मूल्य परत मिळवू शकता. अशा प्रकारे, ही की-व्हॅल्यू जोडीची यादी आहे.

public abstract class Dictionary<K,V> extends Object
हा वर्ग अमूर्त असल्याने, आम्ही त्याच्याशी थेट काम करणार नाही. शब्दकोशात थेट बाल वर्ग हॅशटेबल आहे . त्यामुळे जावामध्ये शब्दकोश तयार करण्यासाठी तुम्ही हॅशटेबल वापरू शकता . हा वर्ग हॅश टेबल लागू करतो, जे मूल्यांसाठी की मॅप करते आणि कोणतीही नॉन-नल ऑब्जेक्ट की म्हणून किंवा मूल्य म्हणून वापरली जाऊ शकते. Java पदानुक्रमात हॅशटेबल डिक्शनरी वाढवते आणि नकाशा लागू करते . एक उदाहरण देऊ. आम्ही हॅशटेबलवर आधारित क्लासिक डिक्शनरी, टेलिफोन बुक तयार करणार आहोत .

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 शून्य सत्य [अँड्र्यू अर्नोल्ड, जॉनी वॉकर, रिकी मॅकब्राईट, आयव्ही ब्रिग्ज] [१२९८, २१७८, २००१, वॉल्कर {८७८] =2178, रिकी मॅकब्राइट = 2001, आयव्ही ब्रिग्स = 1877}

शब्दकोश म्हणून हॅशमॅप

हॅशमॅप , हॅशटेबलच्या विपरीत, डिक्शनरीचा थेट वंशज नाही . तथापि, बर्‍याच वैशिष्ट्यांमुळे, बहुतेक प्रकरणांमध्ये हॅशमॅप वापरून शब्दकोश तयार करणे चांगले आहे . हॅशमॅप क्लास हे हॅशटेबलच्या कार्यक्षमतेमध्ये अगदी समान आहे . मुख्य फरक असा आहे की हॅशटेबलच्या पद्धती समक्रमित केल्या आहेत, परंतु हॅशमॅप नाहीत. हॅशटेबलमध्ये सिंक्रोनाइझेशन कोडची कार्यक्षमता कमी करते. याव्यतिरिक्त, हॅशमॅप वर्ग, हॅशटेबलच्या विपरीत, की (एक) म्हणून नल आणि मूल्य म्हणून शून्याचा संच वापरण्यास अनुमती देते. आमच्या बाबतीत, प्रोग्राम वरील उदाहरणाप्रमाणेच दिसेल. फरक फक्त संग्रहाच्या प्रकारात आहे. तथापि, बर्‍याच प्रकरणांमध्ये Java मधील शब्दकोशांसह कार्य करण्याचा हा प्राधान्यक्रम आहे.

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

}
येथे आउटपुट आहे:
{अँड्र्यू अर्नोल्ड=१२९८, आयव्ही ब्रिग्ज=१८७७, रिकी मॅकब्राईट=२००१, जॉनी वॉकर=२१७८} २१७८ १८७७ शून्य खरे खोटे [अँड्र्यू अरनॉल्ड, आयव्ही ब्रिग्ज, रिकी मॅकब्राईट, जॉनी वॉकर] [१२९८, १८७, १८७] आयव्ही ब्रिग्स = 1877, रिकी मॅकब्राइट = 2001, जॉनी वॉकर = 2178}
टिप्पण्या
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION