हैशपॉप तरीके जावा  



हैश मैप जावा जावा मैप

जावा में HashMap Class डेटा को स्टोर करता है मौलिक मूल्य जोड़े जहां प्रमुख डेटा अद्वितीय होना चाहिए। हम संबंधित कुंजी डेटा के आधार पर मूल्यों तक पहुंच सकते हैं। HashMap जावा के संग्रह ढांचे में मौजूद है और java.util पैकेज का हिस्सा है। यह हाशिंग तकनीक के सिद्धांत पर काम करता है।

जावा हैशपेयर पदानुक्रम  

Java में HashMap क्लास का विस्तार होता है सार कक्षा सार और लागू करता है नक्शा इंटरफ़ेस नीचे दिखाया गया है।

जावा में HashMap

HashMap संरचना और काम सिद्धांत  

जावा में HashMap के सिद्धांत पर काम करता है हैशिंग तकनीक। हैशिंग में, हम हैश फंक्शन में कुंजी और मूल्य को जोड़ने के लिए हैश फ़ंक्शन का उपयोग करते हैं। HashMap कुंजी-मूल्य जोड़े को एक के रूप में संग्रहीत करता है सरणी नोड्स में जहां प्रत्येक प्रविष्टि को एक बाल्टी माना जाता है। एक सरणी में एक तत्व के अलावा एक बाल्टी कुछ भी नहीं है। प्रत्येक नोड में 3 मान होते हैं: कुंजी, मूल्य, और से लिंक करें अगला नोड जब 1 से अधिक नोड समान सूचकांक साझा करते हैं, तो यह एक लिंक की गई सूची का प्रतिनिधित्व करता है। हर नोड को बाल्टी में एक इंडेक्स में मैप किया जाता है जिसे हैशकोड () का उपयोग करके गणना की जाती है।

जावा में HashMap

हशप प्रदर्शन  

Java में HashMap का प्रदर्शन निम्न मापदंडों पर निर्भर करता है:

  • प्रारंभिक क्षमता - यह दर्शाता है कि एक हैशपप को कितने बाल्टी में स्टोर किया जा सकता है जब इसे आरंभीकृत किया जाता है। डिफ़ॉल्ट रूप से, यह है 16 कुंजी मूल्य जोड़े
  • लोड फैक्टर - यह क्षमता का प्रतिशत है जिसे बढ़ाने की आवश्यकता है। डिफ़ॉल्ट रूप से, यह है 0.75
  • थ्रेसहोल्ड - यह लोड फैक्टर और क्षमता का उत्पाद है जिसका डिफ़ॉल्ट मान है 12 (16 * 0.75)
  • रिहैशिंग - यह एक सीमा मूल्य तक पहुंचने के बाद क्षमता को दोगुना करने की प्रक्रिया है।
यह भी देखें
जावा में ArrayBlockingQueue

जावा हैशपॉप घोषणा  

Java में HashMap का उपयोग करने के लिए, हमें आयात करने की आवश्यकता है java.util.HashMap पैकेज। सिंटैक्स नीचे दिया गया है:

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

कुंजी प्रकार - यह कुंजी डेटा का प्रकार है.Eg: स्ट्रिंग या इंटेगर

ValueType - यह मान डेटा का प्रकार है। जैसे: स्ट्रिंग या पूर्णांक

HashMap सुविधाएँ  

नीचे जावा में हाशप की विशेषताएं हैं:

  • प्रत्येक कुंजी के अनुरूप स्टोर मूल्य
  • केवल अद्वितीय कुंजियाँ हैं
  • डुप्लिकेट कुंजियों की अनुमति नहीं देता है लेकिन डुप्लिकेट मान हो सकता है
  • यह किसी भी क्रम को बनाए नहीं रखता है जिसका अर्थ है कि जिस क्रम में डेटा डाला गया है वह उसी क्रम में नहीं है जिस क्रम में इसे पुनर्प्राप्त किया गया है।
  • यह गैर-सिंक्रनाइज़ है

जावा हैशपैड क्लास कंस्ट्रक्टर्स  

नीचे दिए गए तालिका में आप देख सकते हैं कि HashMap 4 अलग-अलग निर्माणकर्ताओं का समर्थन करता है:

निर्माताविवरण
हैश मैप()एक डिफ़ॉल्ट HashMap को प्रारंभ करता है
HashMap (Mapm)मैप मी के तत्वों के साथ हाशमप को शुरू करता है
HashMap (अंतर क्षमता)निर्दिष्ट क्षमता पूर्णांक मान के साथ हैशमैप को आरम्भ करता है
हैशपॉप (अंतर क्षमता, फ्लोट लोडफैक्टर)निर्दिष्ट क्षमता और भारोत्तोलक के साथ हैशमैप को प्रारंभ करता है

हैशपॉप तरीके  

Java HashMap उन सभी तरीकों का समर्थन करता है जो नीचे दिए गए तालिका में बताए गए तरीकों के साथ मैप इंटरफ़ेस से संबंधित हैं

विधिविवरणप्राचल
शून्य स्पष्ट ()इस मैप में सभी मैपिंग को हटा देता है जिसका मतलब है कि नक्शा खाली होगा
ऑब्जेक्ट क्लोन ()इस HashMap उदाहरण की एक उथली प्रति लौटाता है। कुंजी और मूल्य स्वयं क्लोन नहीं हैं
बूलियन में शामिल होता हैयदि निर्दिष्ट कुंजी के लिए मैपिंग मान है तो यह सही हैकुंजी - वह कुंजी जिसके लिए हमें मूल्य को पुनः प्राप्त करने की आवश्यकता है
बूलियन समरूपता (वस्तु मान)यदि निर्दिष्ट मान के लिए कुंजी की मैपिंग है तो यह सही हैमूल्य - वह मान जिसके लिए निर्दिष्ट कुंजी मैप की गई है
सेट प्रविष्टिसेट ()मैप की मैपिंग का एक सेट दृश्य देता है
बूलियन बराबर (ऑब्जेक्ट ओ)यदि ऑब्जेक्ट में मैप का समान मैपिंग है, तो यह सही हैओ - तुलना की जाने वाली वस्तु
पूर्णांक प्राप्त करें (ऑब्जेक्ट कुंजी)मानचित्र में निर्दिष्ट कुंजी का मान लौटाता है। मैपिंग न होने पर यह अशक्त हो जाता हैकुंजी - कुंजी जिसके लिए मूल्य मैपिंग को पुनर्प्राप्त किया जाना है
पूर्णांक प्राप्तमैप किए जाने पर निर्दिष्ट कुंजी का मान लौटाता है, अन्यथा मैपिंग न होने पर डिफाल्टव्यू लौटाता हैकुंजी - वह कुंजी जिसके लिए हमें मूल्य वापस करना होगा
चूक - जब कोई मैपिंग न हो तो डिफ़ॉल्ट मान लौटाया जाना चाहिए
int हैशकोड ()नक्शे का हैशकोड मान लौटाता है
बूलियन इम्प्टी ()रिटर्न सच है हैशमैप में कोई कुंजी-मूल्य जोड़े नहीं हैं
सेट कीसेट ()नक्शे में मौजूद चाबियों का सेट दृश्य लौटाता है
पूर्णांक डाला (स्ट्रिंग कुंजी, int मान)मूल्य के साथ कुंजी संबद्ध करता है। यदि कुंजी पहले से मौजूद है, तो वह पुराने मान को नए मान से बदल देता हैकुंजी - मानचित्रण के लिए कुंजी
मूल्य - निर्दिष्ट कुंजी के लिए मूल्य
शून्य putAll (मानचित्र m)वर्तमान मानचित्र के लिए सभी कुंजी - मूल्य मानचित्रण mm - वर्तमान मानचित्र में जोड़े जाने वाले मानचित्रण की प्रतियां
पूर्णांक putIfAbsent (स्ट्रिंग कुंजी, पूर्णांक मान)मान को संबद्ध करता है यदि पहले से ही कुंजी के लिए मैप न किया गया हो तो वर्तमान मान लौटाता हैकुंजी - मानचित्रण के लिए कुंजी
मूल्य - मूल्य जुड़ा होना
पूर्णांक निकालें (ऑब्जेक्ट कुंजी)मानचित्र में निर्दिष्ट कुंजी के लिए मैपिंग निकालता हैkey - मैप में की जिसके लिए मैपिंग को हटाना पड़ता है
बूलियन निकालें (ऑब्जेक्ट कुंजी, ऑब्जेक्ट मान)निर्दिष्ट कुंजी के प्रवेश को तभी हटाता है जब वह निर्दिष्ट मान के साथ मैप किया जाता हैकुंजी - नक्शे में कुंजी
मूल्य - कुंजी को मैप किया गया
पूर्णांक बदलें (स्ट्रिंग कुंजी, पूर्णांक मान)मूल्य के साथ निर्दिष्ट कुंजी के मूल्य को केवल तभी बदलता है जब यह वर्तमान में कुछ मूल्य के साथ मैप किया जाता हैकुंजी - नक्शे में कुंजी
मूल्य - मूल्य को प्रतिस्थापित किया जाना है
बूलियन की जगहनए कुंजी के साथ निर्दिष्ट कुंजी के प्रवेश को केवल तभी बदल देता है जब यह पहले से निर्दिष्ट पुराने अंतराल के साथ मैप किया गया होकुंजी - नक्शे में कुंजी
पुरानेपन - पुरानेपन की कुंजी
newvalue - कुंजी को मैप करने के लिए newvalue
int आकार ()नक्शे का आकार लौटाता है
स्ट्रिंग toString ()नक्शे का एक स्ट्रिंग प्रतिनिधित्व लौटाता है
संग्रह मान ()मानचित्र में मौजूद मानों का संग्रह दृश्य लौटाता है
यह भी देखें
जावा में हैशसेट

हैशपेज अपवाद  

यह जावा में नीचे अपवादों को फेंकता है:

  • समवर्ती मद्यनिषेध
  • अवैध
  • शून्य सूचक का अपवाद
  • रुकावट
  • अवैध तर्क अपवाद

HashMap में तत्वों को जोड़ना  

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

इसके बाद, हम 'stu' नाम का एक दूसरा हैशपॉप बनाते हैं और फिर 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

कुंजी-मान जोड़ी निकालें और बदलें  

यहाँ, हम Java of Integer में हैशमैप बनाते हैं और तार भाषाओं को स्टोर करने के लिए टाइप करें। हम नए डेटा के साथ 2 मान को प्रतिस्थापित करते हैं और 3 जी मूल्य को प्रतिस्थापित करते हैं यदि विशिष्ट कुंजी-मूल्य जोड़ी का उपयोग कर मानचित्र में मौजूद है बदलने के () विधि.

यह भी देखें
LinkedBlockingDeque जावा में

फिर, हम कुंजी का उपयोग करते हुए 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}

स्पष्ट और खाली तरीकों का उदाहरण  

जावा में HashMap का उपयोग करता है स्पष्ट() मानचित्र में कुंजी-मूल्य जोड़े के मानचित्रण को खाली करने की विधि और खाली है विधि जाँचता है कि क्या नक्शा खाली है। मैपिंग मौजूद होने के बाद से 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

प्रविष्टिसेट का उपयोग करके HashMap तत्वों के माध्यम से परिवर्तन करना  

जावा में हैशपॉप के व्यक्तिगत कुंजी-मूल्य जोड़े को पुनः प्राप्त करने के लिए, हम इसका उपयोग कर सकते हैं प्रविष्टि साथ में हाशप की विधि प्रवेश एक का उपयोग कर नक्शा इंटरफ़ेस की विधि प्रत्येक लूप के लिए। मानचित्र इंटरफ़ेस की प्रविष्टि विधि में अंतर्निहित तरीके हैं जैसे कि गीके () कुंजी पाने के लिए और 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

कीसेट () और मान () का उपयोग कर तत्वों के माध्यम से लूप करें  

हैशमप तत्वों के माध्यम से लूप करने का दूसरा तरीका है चाबीगुछा() तरीका। इसका उपयोग करते हुए, हम नीचे दिए गए उदाहरण में अलग-अलग सभी कुंजियों का एक सेट प्राप्त कर सकते हैं। सभी मानों को अलग-अलग प्राप्त करने के लिए, हम इसका उपयोग कर सकते हैं मान () विधि और उन्हें लूप के लिए प्रिंट करें।

यह भी देखें
जावा में ब्लॉकिंग क्यू इंटरफ़ेस

KeySet का उपयोग करके, हम उपयोग करके लूप के लिए पुनरावृति करके कुंजी-मूल्य जोड़े को भी प्रिंट कर सकते हैं प्राप्त() संबंधित मान प्राप्त करने की विधि।

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

निष्कर्ष  

इस ट्यूटोरियल में, आपने विभिन्न उदाहरणों के साथ हाशप और इसके विभिन्न तरीकों के बारे में सीखा है।

संदर्भ