हॅशमॅप पद्धती जावा



हॅशमॅप जावा जावा नकाशा

जावा मधील हॅशमॅप क्लास डेटा च्या रूपात संग्रहित करतो की-व्हॅल्यू की डेटा अद्वितीय असावा अशा जोड्या. संबंधित की डेटाच्या आधारे आम्ही व्हॅल्यूज मध्ये प्रवेश करू शकतो. जावाच्या संग्रह फ्रेमवर्कमध्ये हॅशमॅप उपस्थित आहे आणि java.util पॅकेजचा भाग आहे. हे हॅशिंग तंत्राच्या तत्त्वावर कार्य करते.

जावा हॅशमॅप पदानुक्रम

जावा मधील हॅशमॅप वर्ग वाढवितो सार वर्ग अ‍ॅबस्ट्रॅक्ट मॅप आणि अंमलबजावणी नकाशा खाली दर्शविल्याप्रमाणे इंटरफेस.

जावा मध्ये हॅशमॅप

हॅशमॅप रचना आणि कार्य तत्त्व

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

जावा मध्ये हॅशमॅप

हॅशमॅप कामगिरी

जावामध्ये हॅशमॅपची कामगिरी खालील पॅरामीटर्सवर अवलंबून असते:

  • आरंभिक क्षमता - हॅशमॅप प्रारंभ झाल्यावर किती बादल्या संचयित करू शकते हे सूचित करते. डीफॉल्टनुसार, ते आहे 16 की-मूल्य जोड्या
  • लोड फॅक्टर - क्षमता वाढविणे आवश्यक आहे याची टक्केवारी आहे. डीफॉल्टनुसार, ते आहे 0.75
  • उंबरठा - हे लोड फॅक्टर आणि क्षमताचे उत्पादन आहे ज्याचे डीफॉल्ट मूल्य आहे 12 (16 * 0.75)
  • रीहॅशिंग - उंबरठा मूल्यापर्यंत पोहोचल्यानंतर क्षमता दुप्पट करण्याची ही प्रक्रिया आहे.

जावा हॅशमॅप घोषणा

जावामध्ये हॅशमॅप वापरण्यासाठी आम्हाला आयात करणे आवश्यक आहे java.util.HashMap पॅकेज वाक्यरचना खाली दिली आहे:

HashMap<KeyType,ValueType> map = new HashMap<>();

की टाईप - हा की डेटाचा प्रकार आहे.इजी: स्ट्रिंग किंवा पूर्णांक

व्हॅल्यू टाईप - हा व्हॅल्यू डेटाचा प्रकार आहे. उदा: तार किंवा पूर्णांक

हॅशमॅप वैशिष्ट्ये

जावा मधील हॅशमॅपची वैशिष्ट्ये खाली आहेतः

  • प्रत्येक कीशी संबंधित मूल्ये संचयित करते
  • केवळ अद्वितीय की असतात
  • डुप्लिकेट कळा परवानगी देत ​​नाही परंतु त्यामध्ये डुप्लिकेट मूल्ये असू शकतात
  • हे कोणतीही ऑर्डर राखत नाही ज्याचा अर्थ असा आहे की ज्या क्रमाने डेटा समाविष्ट केला आहे तो पुनर्क्रमित करण्याच्या क्रमासारखा नाही.
  • हे समक्रमित न केलेले आहे

जावा हॅशमॅप क्लास कन्स्ट्रक्टर

आपण खालील तक्त्यात पाहू शकता म्हणून हॅशमॅप 4 भिन्न कन्स्ट्रक्टरना समर्थन देतो:

रचनाकारवर्णन
हॅशमॅप ()डीफॉल्ट हॅशमॅप सुरू करते
हॅशमॅप (मॅपम)नकाशा मीटरच्या घटकांसह हॅशमॅपचा प्रारंभ करतो
हॅशमॅप (पूर्वीची क्षमता)निर्दिष्ट क्षमता पूर्णांक मूल्यासह हॅशमॅप प्रारंभ करते
हॅशमॅप (इंट क्षमता, फ्लोट लोडफॅक्टर)निर्दिष्ट क्षमता आणि लोडफॅक्टरसह हॅशमॅप प्रारंभ करते

हॅशमॅप पद्धती

जावा हॅशमॅप खालील तक्त्यामध्ये नमूद केलेल्या पद्धतींबरोबरच नकाशा इंटरफेसशी संबंधित असलेल्या सर्व पद्धती समर्थित करते

पद्धतवर्णनघटक
शून्य स्पष्ट ()या नकाशामधील सर्व मॅपिंग्ज काढून टाकतात याचा अर्थ नकाशा रिक्त असेल
ऑब्जेक्ट क्लोन ()या हॅशमॅप घटकाची उथळ प्रत परत करते. की आणि मूल्ये स्वत: क्लोन केलेली नाहीत
बुलियनमध्ये की (ऑब्जेक्ट की) आहेनिर्दिष्ट कीसाठी मॅपिंग मूल्य असल्यास ते सत्य मिळवतेकी - की ज्यासाठी आम्हाला मूल्य परत मिळवणे आवश्यक आहे
बुलियनमध्ये व्हॅल्यू (ऑब्जेक्ट मूल्य)निर्दिष्ट मूल्यासाठी कीचे मॅपिंग असल्यास ते सत्य मिळवतेमूल्य - ज्यासाठी निर्दिष्ट की मॅप केली जाते त्याचे मूल्य
सेट एंट्रीसेट ()नकाशाच्या मॅपिंगचे एक सेट दृश्य मिळवते
बुलियन बरोबरी (ऑब्जेक्ट ओ)ऑब्जेक्टमध्ये नकाशाचे समान मॅपिंग असल्यास ते सत्य मिळवतेo - तुलना करण्याची वस्तू
पूर्णांक मिळवा (ऑब्जेक्ट की)नकाशामध्ये निर्दिष्ट कीचे मूल्य मिळवते. कोणतेही मॅपिंग नसल्यास ते निरर्थक परत येतेकी - ज्यासाठी व्हॅल्यू मॅपिंग पुन्हा मिळविली पाहिजे
पूर्णांक getOrDefault (ऑब्जेक्ट की, पूर्णांक मुलभूत मूल्य)मॅप केलेले असल्यास निर्दिष्ट कीचे मूल्य मिळवते, अन्यथा मॅपिंग नसल्यास डीफॉल्ट मूल्य परत करतेकी - ज्या किल्लीसाठी आम्ही मूल्य देतो ती परत करावी लागेल
डीफॉल्ट व्हॅल्यू - कोणतेही मॅपिंग नसताना परत करणे डीफॉल्ट मूल्य
इंट हॅशकोड ()नकाशाचे हॅशकोड मूल्य मिळवते
बुलियन इम्प्टी ()मिळते सत्य हे आहे की हॅशमॅपमध्ये की-व्हॅल्यू जोड्या नाहीत
कीसेट सेट करा ()नकाशामध्ये उपस्थित असलेल्या कळाचे सेट दृश्य परत करते
पूर्णांक (स्ट्रिंग की, इंट व्हॅल्यू)किल्ली मूल्यासह संबद्ध करते. की आधीपासून अस्तित्त्वात असल्यास ती जुने मूल्य नवीन मूल्यासह पुनर्स्थित करतेकी - मॅपिंगसाठी की
निर्दिष्ट कीसाठी मूल्य - मूल्य
रिकामा पुलआल (नकाशा मीटर)विद्यमान नकाशावर सर्व की - एम चे मूल्य मॅपिंग संबद्ध करतेमी - वर्तमान नकाशावर जोडण्यासाठी मॅपिंगच्या प्रती
पूर्णांक putIfAbmitted (स्ट्रिंग की, पूर्णांक मूल्य)आधीपासूनच कीमध्ये मॅप केलेले नसल्यास मूल्य संबद्ध करते अन्यत्र वर्तमान मूल्य परत करतेकी - मॅपिंगसाठी की
मूल्य - संबंधित असणे
पूर्णांक काढा (ऑब्जेक्ट की)नकाशामधील निर्दिष्ट की साठी मॅपिंग काढून टाकतेकी - नकाशामधील की ज्यासाठी मॅपिंग काढावी लागेल
बुलियन रिमू (ऑब्जेक्ट की, ऑब्जेक्ट व्हॅल्यू)निर्दिष्ट केलेल्या मूल्यासह मॅप केलेले असेल तरच निर्दिष्ट कीची प्रविष्टी काढून टाकतेकी - नकाशा मध्ये की
मूल्य - की वर मॅप केलेले मूल्य
पूर्णांक पुनर्स्थित करा (स्ट्रिंग की, पूर्णांक मूल्य)निर्दिष्ट केलेल्या कीचे मूल्य सध्या केवळ काही मूल्यासह मॅप केलेले असल्यास त्या मूल्यासह पुनर्स्थित करतेकी - नकाशा मध्ये की
मूल्य - मूल्य पुनर्स्थित करणे
बुलियन रिप्लेस (स्ट्रिंग की, पूर्णांक जुने मूल्य, पूर्णांक नवीन मूल्य)निर्दिष्ट कीच्या प्रविष्टीचे आधीपासूनच निर्दिष्ट केलेल्या जुन्या मूल्यासह मॅप केले असल्यासच नवीन मूल्यासह प्रवेश बदली करतेकी - नकाशामधील की
जुने मूल्य - जुने मूल्य की वर मॅप केले
newvalue - की वर मॅप्ड केलेले newvalue
पूर्ण आकार ()नकाशाचा आकार मिळवते
स्ट्रिंग टूस्ट्रिंग ()नकाशाचे स्ट्रिंग प्रतिनिधित्व मिळवते
संग्रह मूल्ये ()नकाशामध्ये उपस्थित मूल्यांचे संग्रह दृश्य मिळवते

हॅशमॅप अपवाद

हे जावा मध्ये खालील अपवाद भिरकावतो:

  • समकालीनमोडीफिकेशनएक्सप्शन
  • बेकायदेशीर मॉनिटर स्टेट एक्सेप्शन
  • NullPointerException
  • व्यत्यय आला
  • बेकायदेशीररित्याविचार

हॅशमॅपवर घटक समाविष्ट करणे

आपण खाली दिलेल्या उदाहरणात पाहू शकता, प्रथम आम्ही स्ट्रिंग टाईप आणि इंटिजर प्रकारच्या व्हॅल्यूसह 'स्टुडंट' नावाचे हॅशमॅप तयार करतो. त्यानंतर आम्ही वैयक्तिक की-व्हॅल्यू जोड जोडू ठेवले पद्धत. आउटपुटमध्ये आपण लक्षात घेऊ शकता की ज्या घटकात घटक पुनर्प्राप्त केले जातात त्या क्रमाने ते घातलेल्या क्रमाने सारखे नसतात.

पुढे आपण 'स्टू' नावाचा दुसरा हॅशमॅप तयार करू आणि नंतर 2 की-व्हॅल्यू जोड्या जोडा. हे नंतर आपण 'विद्यार्थी' नकाशाचा वापर करून जोडू पुटआल पद्धत

import java.util.HashMap;
public class HashMapAdd {

  public static void main(String[] args) {
    HashMap<String,Integer> student = new HashMap<>();
    student.put("Arthi", 100);
    student.put("Dev", 105);
    student.put("Banu",102);
    student.put("Rishi", 108);
    System.out.println("Elements in student map:");
    System.out.println(student);
    
    HashMap<String,Integer> stu = new HashMap<>();
    stu.put("Ravi",110);
    stu.put("Tejas", 112);
    System.out.println("Elements in stu map:");
    System.out.println(stu);
    
    student.putAll(stu);
    
    System.out.println("Elements in student map after invoking putAll method:");
    System.out.println(student);
  }

}
Elements in student map:
{Dev=105, Banu=102, Rishi=108, Arthi=100}
Elements in stu map:
{Ravi=110, Tejas=112}
Elements in student map after invoking putAll method:
{Dev=105, Ravi=110, Tejas=112, Banu=102, Rishi=108, Arthi=100}

नकाशामध्ये विशिष्ट की किंवा मूल्य आहे की नाही ते तपासा

आम्ही वापरतो समाविष्टीत आहे नकाशामध्ये विशिष्ट की उपलब्ध आहे की नाही हे तपासण्याची पद्धत. या प्रकरणात, देव उपस्थित आहे आणि म्हणून ते सत्य परत करते आणि रवि उपस्थित नाही आणि म्हणून खोटे परत करतो.

तसेच, समाविष्टीत आहे विशिष्ट मूल्य उपलब्ध असल्यास मेथड तपासते. येथे, 102 अस्तित्वात आहे परंतु 110 अस्तित्त्वात नाहीत आणि म्हणूनच ते चुकीचे परत आले.

import java.util.HashMap;
public class HashMapAdd {

  public static void main(String[] args) {
    HashMap<String,Integer> student = new HashMap<>();
    student.put("Arthi", 100);
    student.put("Dev", 105);
    student.put("Banu",102);
    student.put("Rishi", 108);
    System.out.println("Elements in student map:");
    System.out.println(student);
    
    System.out.println(student.containsKey("Dev"));
    System.out.println(student.containsKey("Ravi"));
    
    System.out.println(student.containsValue(102));
    System.out.println(student.containsValue(110));
  }

}
Elements in student map:
{Dev=105, Banu=102, Rishi=108, Arthi=100}
true
false
true
false

की-मूल्य जोडी काढा आणि पुनर्स्थित करा

येथे आपण इंटिजर आणि जावा मध्ये हॅशमॅप तयार केला आहे अक्षरमाळा भाषा संग्रहित करण्यासाठी टाइप करा. आम्ही नवीन डेटासह द्वितीय मूल्य बदलवितो आणि विशिष्ट की-मूल्य जोडी वापरुन नकाशामध्ये उपस्थित असल्यास 2 रा मूल्य पुनर्स्थित करतो () बदला पद्धत

मग आम्ही की चा वापर करून 3 रा घटक काढून टाकतो आणि 1 चा घटक वापरून की-व्हॅल्यू वापरुन काढतो () काढा पद्धत

import java.util.HashMap;
public class RemoveHashMap {

  public static void main(String[] args) {
    HashMap<Integer,String> lang = new HashMap<>();
    lang.put(1, "Java");
    lang.put(2, "C");
    lang.putIfAbsent(3, "C++");
    System.out.println(lang);
    
    lang.replace(2, "PHP");
    System.out.println(lang);
    
    lang.replace(3, "C++", "JavaScript");
    System.out.println(lang);
    
    lang.remove(3);
    System.out.println(lang);
    
    lang.remove(1, "Java");		
    System.out.println(lang);
    
    
  }

}
{1=Java, 2=C, 3=C++}
{1=Java, 2=PHP, 3=C++}
{1=Java, 2=PHP, 3=JavaScript}
{1=Java, 2=PHP}
{2=PHP}

स्पष्ट आणि रिक्त पद्धतींचे उदाहरण

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

import java.util.HashMap;
public class RemoveHashMap {

  public static void main(String[] args) {
    HashMap<Integer,String> lang = new HashMap<>();
    lang.put(1, "Java");
    lang.put(2, "C");
    
    System.out.println(lang.isEmpty());
    lang.clear();
    
    System.out.println(lang.isEmpty());
    
  }

}
false
true

एंट्रीसेटचा वापर करून हॅशमॅप घटकांद्वारे आयटरिंग

जावामधील हॅशमॅपच्या वैयक्तिक की-मूल्याच्या जोड्या पुनर्प्राप्त करण्यासाठी आपण हे वापरू शकतो एंट्रीसेट सोबत हॅशमॅप पद्धत प्रवेश a चा वापर करुन नकाशा इंटरफेसची पद्धत प्रत्येक लूप. नकाशा इंटरफेसच्या प्रविष्टी पध्दतीमध्ये अंगभूत पद्धती असतात geyKey () की मिळविण्यासाठी आणि getValue () संबंधित मूल्य मिळविण्यासाठी. आम्ही वापरू शकतो आकार () नकाशाचा आकार मिळविण्याची पद्धत.

import java.util.HashMap;
import java.util.Map;
public class IterateHashMap {

  public static void main(String[] args) {
    HashMap<String,String> cityState = new HashMap<>();
    cityState.put("Bangalore", "Karnataka");
    cityState.put("Chennai", "TamilNadu");
    cityState.put("Madurai", "TamilNadu");
    cityState.put("Mumbai", "Maharashtra");
    
    System.out.println("Size of map is : " + cityState.size());
    
    for(Map.Entry<String,String> m : cityState.entrySet())
    {
      System.out.println(m.getKey() + " : " + m.getValue());
    }

  }

}
Size of map is : 4
Chennai : TamilNadu
Madurai : TamilNadu
Mumbai : Maharashtra
Bangalore : Karnataka

कीसेट () आणि मूल्ये () वापरून घटकांद्वारे पळवाट

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

कीसेटचा वापर करून, लूपसाठी इटरेट करुन की-व्हॅल्यू जोड्या प्रिंट करू शकतो मिळवा () संबंधित मूल्ये मिळविण्यासाठी पद्धत.

import java.util.HashMap;
import java.util.Map;
public class IterateHashMap {

  public static void main(String[] args) {
    HashMap<String,String> cityState = new HashMap<>();
    cityState.put("Bangalore", "Karnataka");
    cityState.put("Chennai", "TamilNadu");
    cityState.put("Madurai", "TamilNadu");
    cityState.put("Mumbai", "Maharashtra");
    
    System.out.println("Printing only keys:");
    for(String s : cityState.keySet())
    {
      System.out.println(s);
    }
    System.out.println();
    System.out.println("Printing only values: ");
    for(String c : cityState.values())
    {
      System.out.println(c);
    }
    System.out.println();
    System.out.println("Printing both key-value pairs:");
    for(String v : cityState.keySet())
    {
      System.out.println("Key: " + v + " | value: " + cityState.get(v));
    }
  }

}
Printing only keys:
Chennai
Madurai
Mumbai
Bangalore

Printing only values: 
TamilNadu
TamilNadu
Maharashtra
Karnataka

Printing both key-value pairs:
Key: Chennai | value: TamilNadu
Key: Madurai | value: TamilNadu
Key: Mumbai | value: Maharashtra
Key: Bangalore | value: Karnataka

निष्कर्ष

या ट्यूटोरियल मध्ये आपण हॅशमॅप आणि त्याच्या विविध पद्धतींबरोबरच विविध उदाहरणांसह शिकलात.

संदर्भ