ஜாவா நிரலில் நீங்கள் அகராதியை உருவாக்க வேண்டும் என்றால், இந்த சிக்கலை தீர்க்க மிகவும் தர்க்கரீதியான வழி அகராதி தரவு கட்டமைப்பைப் பயன்படுத்துவதாகும். இந்த தரவு அமைப்பு "முக்கிய - மதிப்பு" வடிவத்தில் தகவலைச் சேமிக்க உங்களை அனுமதிக்கிறது. ஜாவாவில் ஒரு சிறப்பு அகராதி வகுப்பு மற்றும் அதன் வழித்தோன்றல், ஹேஷ்டேபிள் உள்ளது . வரைபட இடைமுகம் மற்றும் ஹாஷ்மேப் வகுப்பும் உள்ளது , இது "விசை - மதிப்பு" ஜோடிகளையும் சேமிக்கிறது. எனவே ஜாவா அகராதியை உருவாக்க பல வழிகள் உள்ளன.
அகராதி தரவு அமைப்பு
எனவே, அகராதி தரவு அமைப்பு தகவலை ஒரு முக்கிய மதிப்பு கலவையாக சேமிக்கிறது. அதாவது, எந்த மதிப்புடனும் நாம் ஒரு விசையை இணைக்கிறோம் (எடுத்துக்காட்டாக, ஐடியாக இருக்கலாம்) மற்றும் இந்த ஜோடியை அகராதியில் உள்ளிடவும். அகராதியின் ஒரு உறுப்பை நிவர்த்தி செய்தல், நீக்குதல், அகராதியில் தேடுதல் ஆகியவை விசையால் செய்யப்படுகின்றன. அத்தகைய தரவு கட்டமைப்பைப் பயன்படுத்தி ஒழுங்கமைக்க வசதியாகத் தெரிகிறது, எடுத்துக்காட்டாக, ஒரு தொலைபேசி புத்தகம், அங்கு பெயர் (விசை) தொலைபேசி எண்ணுடன் (மதிப்பு) ஒத்துள்ளது.அகராதி வகுப்பு மற்றும் அதன் விரிவாக்கம்
தொடங்குவதற்கு, java.util.Dictionary <K, V> util.அகராதி என்பது ஒரு சுருக்க வகுப்பு. இது ஒரு முக்கிய-மதிப்பு உறவைக் குறிக்கிறது மற்றும் வரைபடத்தைப் போலவே செயல்படுகிறது. ஒரு விசை கொடுக்கப்பட்டால், நீங்கள் மதிப்புகளைச் சேமிக்கலாம் மற்றும் தேவைப்படும்போது அதன் விசையைப் பயன்படுத்தி மதிப்பை மீட்டெடுக்கலாம். எனவே, இது முக்கிய மதிப்பு ஜோடிகளின் பட்டியல்.public abstract class Dictionary<K,V> extends Object
இந்த வகுப்பு சுருக்கமானது என்பதால், நாங்கள் அதனுடன் நேரடியாக வேலை செய்ய மாட்டோம். அகராதியில் நேரடி குழந்தை வகுப்பு ஹேஷ்டேபிள் உள்ளது . எனவே Java இல் அகராதியை உருவாக்க நீங்கள் Hashtable ஐப் பயன்படுத்தலாம் . இந்த வகுப்பு ஒரு ஹாஷ் அட்டவணையை செயல்படுத்துகிறது, இது மதிப்புகளுக்கான விசைகளை வரைபடமாக்குகிறது மற்றும் எந்த பூஜ்யமற்ற பொருளையும் ஒரு விசையாக அல்லது மதிப்பாகப் பயன்படுத்தலாம். ஜாவா படிநிலையில் Hashtable அகராதியை விரிவுபடுத்தி வரைபடத்தை செயல்படுத்துகிறது . ஒரு உதாரணம் தருவோம். 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 பூஜ்ய உண்மை [Andrew Arnold, Johnny Walker, Ricky McBright, Ivy Briggs] [1298, 2178, 27 வால்கர் =2178, ரிக்கி மெக்பிரைட்=2001, ஐவி பிரிக்ஸ்=1877}
அகராதியாக ஹாஷ்மேப்
HashMap , Hashtable போலல்லாமல், அகராதியின் நேரடி வழித்தோன்றல் அல்ல . இருப்பினும், பல அம்சங்கள் காரணமாக, பெரும்பாலான சந்தர்ப்பங்களில் HashMap ஐப் பயன்படுத்தி அகராதியை உருவாக்குவது நல்லது . HashMap வகுப்பு Hashtable க்கு மிகவும் ஒத்ததாக உள்ளது . முக்கிய வேறுபாடு என்னவென்றால், Hashtable இன் முறைகள் ஒத்திசைக்கப்பட்டுள்ளன, ஆனால் HashMap இல்லை. ஹேஷ்டேபிளில் உள்ள ஒத்திசைவு குறியீட்டின் செயல்திறனைக் குறைக்கிறது. கூடுதலாக, HashMap வகுப்பு, Hashtable போலல்லாமல், பூஜ்யத்தை ஒரு விசையாகவும் (ஒன்று) மற்றும் பூஜ்யத்தின் தொகுப்பை மதிப்புகளாகவும் பயன்படுத்த அனுமதிக்கிறது. எங்கள் விஷயத்தில், நிரல் மேலே உள்ள உதாரணத்தைப் போலவே இருக்கும். சேகரிப்பு வகைகளில் மட்டுமே வித்தியாசம் உள்ளது. இருப்பினும், பெரும்பாலான சந்தர்ப்பங்களில் ஜாவாவில் அகராதிகளுடன் பணிபுரிய இதுவே விருப்பமான வழியாகும்.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 [Andrew Arnold, Ivy Briggs, Ricky McBright, Johnny Walker] [1801], 218, 21 ஐவி பிரிக்ஸ்=1877, ரிக்கி மெக்பிரைட்=2001, ஜானி வாக்கர்=2178}