सेल्सफोर्स एपेक्स मैप एक डेटा संरचना है जो मुख्य रूप से ट्रिगर परिदृश्यों में उपयोग की जाती है और एक सूची की तरह सेल्सफोर्स डेटाबेस में एक समय में अधिक डेटा लोड करने में मदद करती है। लेकिन यह डेटा को {कुंजी: मान} जोड़ी प्रारूप में संग्रहीत और व्यवस्थित करता है। हम एपेक्स प्रोग्रामिंग लैंग्वेज और इसकी विधियों में मानचित्र संग्रह पर चर्चा करेंगे। यहां, हम सभी उदाहरणों के लिए Salesforce में खाता मानक वस्तु का उपयोग करेंगे। आइए जल्दी से इस ट्यूटोरियल में गोता लगाएँ।
नक्शा
नक्शा {कुंजी: मान} जोड़ी डेटा को इनपुट के रूप में लेता है और इसे सेल्सफोर्स मानक या कस्टम ऑब्जेक्ट्स में संग्रहीत करता है। यह एसओब्जेक्ट को कुंजी या मान के रूप में ले सकता है।
नक्शा निर्माण
ऑब्जेक्ट के नाम के साथ कुंजी और मान के डेटा प्रकार निर्दिष्ट करके मानचित्र बनाया जा सकता है। यहां इसे बनाने के लिए एक नए कीवर्ड का उपयोग किया जाता है। निर्माण के दौरान तत्वों को पास करना वैकल्पिक हो सकता है।
खाली मानचित्र सिंटैक्स:
मैप <की_डेटाटाइप, वैल्यू_डेटाटाइप> मैप_ओबीजे = नया मैप <की_डेटाटाइप, वैल्यू_डेटाटाइप> ():सामान्य वाक्य-विन्यास:
मैप <की_डेटाटाइप, वैल्यू_डेटाटाइप> मैप_ओबीजे = नया मैप <की_डेटाटाइप, वैल्यू_डेटाटाइप> {कुंजी => मान, ....};
सोबजेक्ट सिंटेक्स:
नक्शाकुंजी => मान, ....};
यहां, एसओब्जेक्ट एक मानक या कस्टम ऑब्जेक्ट हो सकता है। इस पूरे लेख में, हम केवल 'खाता' एसओब्जेक्ट के साथ मानचित्र से निपटेंगे।
आइए एक-एक करके एपेक्स 'मैप' संग्रह द्वारा समर्थित विधियों को देखें।
पर्यावरण सेटअप
1. सेल्सफोर्स में जल्दी से लॉग इन करें और गियर आइकन पर क्लिक करके 'डेवलपर कंसोल' खोलें।
2. फिर, 'डीबग' और 'ओपन एग्जीक्यूट बेनामी विंडो' पर क्लिक करके 'बेनामी विंडो' खोलें।
सामान्य उदाहरण:
सबसे पहले, हम दो विषयों के साथ एक मानचित्र बनाकर सामान्य मानचित्र निर्माण देखेंगे: 'विषय_आईडी' जो एक कुंजी के रूप में कार्य करता है और 'मान' विषय नाम के रूप में कार्य करता है।
नक्शा <पूर्णांक, स्ट्रिंग> प्रोग्रामिंग = नया नक्शा <पूर्णांक, स्ट्रिंग> {1 => 'लिनक्स', 2 => 'पायथन'};system.debug (प्रोग्रामिंग);
आउटपुट:
- 'निष्पादित करें' पर क्लिक करें।
- 'डीबग केवल' विकल्प की जाँच करें। आप 'निष्पादन लॉग' में आउटपुट देख सकते हैं।
मानचित्र के तरीके
सबसे पहले, हम 'खाता' वस्तु से एक नक्शा बनाते हैं। हम एक-एक करके नाम के साथ तीन खाते बनाते हैं। फिर, हम कुंजी और मान के रूप में मानचित्र घोषित करते हैं
खाता खाता 1 = नया खाता (नाम = 'लिनक्स संकेत');
खाता खाता 2 = नया खाता (नाम = 'सेल्सफोर्स');
खाता खाता 3 = नया खाता (नाम = 'पायथन');
// उपरोक्त खातों को map_obj की कुंजी के रूप में जोड़ें
नक्शा
खाता 1 => 1000, खाता 2 => 2000, खाता 3 => 3000};
System.debug (map_obj);
आउटपुट:
आप देख सकते हैं कि 'map_obj' तीन खाते संग्रहीत करता है।
1. मानचित्र.मान ()
दिए गए मानचित्र से केवल मान वापस करने के लिए, हम मान () विधि का उपयोग कर सकते हैं। इसमें कोई पैरामीटर नहीं लगेगा। यह अल्पविराम द्वारा अलग किए गए मानों की सूची देता है।
वाक्य - विन्यास:
map_object.मान ()उदाहरण:
आइए पिछले मानचित्र से सभी मान वापस करें। सुनिश्चित करें कि आपको पिछले उदाहरण कोड को निष्पादित करने की आवश्यकता है (तीन खातों के साथ एक मानचित्र बनाएं)। अन्यथा, आपको त्रुटि मिलेगी। कोड कंसोल में भी मौजूद होना चाहिए।
// मूल्यों का उपयोग करके सभी कुंजियों के लिए मान लौटाएं ()System.debug (map_obj.values ());
आउटपुट:
केवल तीन कुंजी हैं: map_obj में मूल्य जोड़े। मान हैं: 1000, 2000 और 3000।
2. मैप.कीसेट ()
रिटर्न कीज़ मैप ऑब्जेक्ट में मौजूद हैं। मान () के समान, इस पद्धति में किसी भी पैरामीटर को पास करने की आवश्यकता नहीं है।
वाक्य - विन्यास:
map_object.keySet ()उदाहरण:
आइए पिछले मानचित्र से सभी कुंजियाँ वापस करें। सुनिश्चित करें कि आपने पिछले उदाहरण कोड को निष्पादित किया है (तीन खातों के साथ एक मानचित्र बनाएं)। अन्यथा, आपको त्रुटि मिलेगी। कोड कंसोल में भी मौजूद होना चाहिए।
// कीसेट () का उपयोग करके सभी कुंजियाँ लौटाएँSystem.debug (map_obj.keySet ());
आउटपुट:
केवल तीन कुंजी हैं: map_obj में मूल्य जोड़े। कुंजी हैं: {खाता: {नाम = लिनक्स संकेत}, खाता: {नाम = पायथन}, और खाता: {नाम = सेल्सफोर्स}।
3. नक्शा आकार ()
कुछ परिदृश्यों में, हमें एपेक्स मानचित्र में मौजूद कुल वस्तुओं (कुंजी: मान) जोड़े को जानने की आवश्यकता है। आकार () वह तरीका है जो map_object में मौजूद कुल (कुंजी: मान) जोड़े लौटाता है। इस पद्धति के लिए पैरामीटर की आवश्यकता नहीं है।
वाक्य - विन्यास:
map_object.size ()उदाहरण:
पिछले मैप ऑब्जेक्ट का आकार लौटाएं।
// आकार का उपयोग करके जोड़े की कुल संख्या लौटाएं ()System.debug (map_obj.size ());
आउटपुट:
चूंकि केवल 3 जोड़े हैं, लौटा हुआ आकार () 3 है।
4. मानचित्र प्राप्त करें ()
कुंजी का उपयोग करके मानचित्र से मानों तक पहुँच प्राप्त () विधि का उपयोग करके की जाती है। ऐसा करने के लिए, हमें कुंजी को गेट () विधि के पैरामीटर के रूप में पास करना होगा। यदि कोई अज्ञात कुंजी पास हो जाती है, तो यह एक त्रुटि लौटाती है।
वाक्य - विन्यास:
map_object.get (कुंजी)उदाहरण:
key-2 और key-1 के मान अलग-अलग लौटाएं।
// दूसरी कुंजी का मान प्राप्त करेंSystem.debug (map_obj.get (खाता 2));
// पहली कुंजी का मान प्राप्त करें
System.debug (map_obj.get (खाता 1));
आउटपुट:
यहां, 2000 'सेल्सफोर्स' कुंजी का मान है और 1000 'लिनक्स संकेत' कुंजी का मान है।
5. मानचित्र। स्पष्ट ()
शीर्ष मानचित्र संग्रह में सभी जोड़े एक समय में स्पष्ट () विधि का उपयोग करके हटाए जा सकते हैं। इसमें कोई पैरामीटर नहीं लगेगा।
वाक्य - विन्यास:
map_object.clear ()उदाहरण:
पिछले 'map_obj' में जोड़े को हटा दें।
// स्पष्ट होने से पहले ()System.debug (map_obj);
// स्पष्ट () का उपयोग करके सभी जोड़े निकालें
map_obj.clear ();
// स्पष्ट होने के बाद ()
System.debug (map_obj);
आउटपुट:
पहले, 'map_obj' में 3 की-वैल्यू जोड़े थे। स्पष्ट () विधि लागू करने के बाद, सभी 3 हटा दिए जाते हैं।
6. नक्शा बराबर ()
हम बराबर () पद्धति का उपयोग करके दो मानचित्र वस्तुओं की तुलना कर सकते हैं। यदि सभी कुंजियाँ और मान दोनों मानचित्र वस्तुओं में समान हैं, तो सही का बूलियन मान लौटाया जाता है। जबकि कम से कम एक मान अलग होने पर गलत का बूलियन मान लौटाया जाता है।
वाक्य - विन्यास:
map_object1.equals (map_object2)उदाहरण:
आइए एक कुंजी के साथ तीन मैप ऑब्जेक्ट बनाएं: वैल्यू पेयर, प्रत्येक 'अकाउंट' ऑब्जेक्ट के संबंध में। इन वस्तुओं की आपस में तुलना कीजिए।
// खाता -1खाता खाता 1 = नया खाता (नाम = 'लिनक्स संकेत');
नक्शा
खाता1 => 1000};
System.debug ('नक्शा - 1:' + map_obj1);
// खाता -2
खाता खाता 2 = नया खाता (नाम = 'लिनक्स संकेत');
नक्शा
खाता2 => 1000};
System.debug ('नक्शा - 2:' + map_obj1);
// खाता -3
खाता खाता 3 = नया खाता (नाम = 'पायथन');
नक्शा
खाता3 => 2000};
System.debug ('मानचित्र - 3:' + map_obj3);
// बराबर ()
System.debug ('मानचित्र 1 और मानचित्र 2 समान हैं:' + map_obj1.equals (map_obj2));
System.debug ('मानचित्र 1 और मानचित्र 3 समान हैं:' + map_obj1.equals (map_obj3));
आउटपुट:
पहला और दूसरा मैप ऑब्जेक्ट समान हैं क्योंकि दोनों ऑब्जेक्ट्स में कुंजियाँ और मान समान हैं। कुंजियाँ और मान भिन्न होने के बाद से पहली और तीसरी मानचित्र वस्तुएँ समान नहीं हैं।
7. Map.isEmpty ()
isEmpty() मेथड का इस्तेमाल करके हम चेक कर सकते हैं कि मैप खाली है या नहीं। शीर्ष नक्शा संग्रह खाली होने पर सत्य वापस आ जाता है। अन्यथा, झूठा वापस आ जाता है। आकार () विधि के समान, इसमें कोई पैरामीटर नहीं होगा।
वाक्य - विन्यास:
map_object.isEmpty ()उदाहरण:
चलिए दो मैप ऑब्जेक्ट बनाते हैं जो 'अकाउंट' से संबंधित हैं और जांचें कि ये दोनों खाली हैं या नहीं।
// खाता -1खाता खाता 1 = नया खाता (नाम = 'लिनक्स संकेत');
नक्शा
खाता1 => 1000};
// खाता -2
नक्शा
// खाली है()
System.debug ('नक्शा -1 खाली है:' + map_obj1.isEmpty ());
System.debug ('नक्शा -2 खाली है:' + map_obj2.isEmpty ());
आउटपुट:
पहला नक्शा खाली नहीं है क्योंकि इसमें एक की-वैल्यू पेयर है। दूसरा नक्शा खाली है क्योंकि उसमें कुछ भी नहीं है।
8. मानचित्र.निकालें ()
एपेक्स मानचित्र संग्रह में निकालें () विधि का उपयोग पैरामीटर के रूप में निर्दिष्ट कुंजी के आधार पर एक विशेष कुंजी-मूल्य जोड़ी को हटाने के लिए किया जाता है। यदि कुंजी मौजूद नहीं है, तो एक त्रुटि उठाई जाती है।
वाक्य - विन्यास:
map_object.remove (कुंजी)उदाहरण:
आइए दो वस्तुओं के साथ एक नक्शा बनाएं और पहले आइटम को हटा दें।
खाता खाता 1 = नया खाता (नाम = 'लिनक्स संकेत');खाता खाता 2 = नया खाता (नाम = 'पायथन');
नक्शा
खाता 1 => 1000, खाता 2 => 4000};
System.debug ('मौजूदा नक्शा' + map_obj);
//निकालना()
map_obj.remove (खाता 1);
System.debug ('पहले आइटम को हटाने के बाद:' + map_obj);
आउटपुट:
मानचित्र से पहला आइटम हटाने के बाद, केवल एक आइटम मौजूद है - {खाता: {नाम = पायथन} = 4000}।
9. मैप.पुट ()
इस पद्धति का उपयोग करके, हम एक समय में सीधे एक आइटम को मैप ऑब्जेक्ट में जोड़ सकते हैं। यह दो मापदंडों को स्वीकार करता है: 'कुंजी' पहला पैरामीटर है जबकि 'मान' दूसरा पैरामीटर है।
वाक्य - विन्यास:
map_object.put (कुंजी, मान)उदाहरण:
चलिए एक की-वैल्यू पेयर के साथ एक मैप बनाते हैं। फिर, हम 'खाता 2' डालने के लिए 'पुट' विधि का उपयोग करते हैं।
// खाता -1खाता खाता 1 = नया खाता (नाम = 'लिनक्स संकेत');
नक्शा
खाता1 => 1000};
System.debug ('वास्तविक मानचित्र:' + map_obj1);
// खाता -2
खाता खाता 2 = नया खाता (नाम = 'पायथन');
// रखना()
map_obj1.put (खाता 2,2000);
System.debug ('अंतिम मानचित्र:' + map_obj1);
आउटपुट:
पहले, मानचित्र में केवल एक कुंजी-मूल्य युग्म होता था जो {खाता: {नाम = लिनक्स संकेत} = 1000} है। 'खाता 2' जोड़ने के बाद, अंतिम मानचित्र में दो कुंजी-मूल्य जोड़े होते हैं जो {खाता: {नाम = लिनक्स संकेत} = 1000 और खाता: {नाम = पायथन} = 2000} होते हैं।
10. मैप.पुटऑल ()
इस पद्धति का उपयोग करके, हम एक समय में मानचित्र वस्तु में सीधे एक या एक से अधिक आइटम जोड़ सकते हैं। यह मानचित्र संग्रह वस्तु को एक पैरामीटर के रूप में लेता है।
वाक्य - विन्यास:
map_object1.putAll (map_object2)उदाहरण:
चलिए दो की-वैल्यू पेयर के साथ एक मैप बनाते हैं और बिना किसी आइटम के फिर से एक खाली मैप ऑब्जेक्ट बनाते हैं। पहले मैप ऑब्जेक्ट में उपलब्ध आइटम को दूसरे मैप ऑब्जेक्ट में जोड़ने के लिए putAll () विधि का उपयोग करें।
खाता खाता 1 = नया खाता (नाम = 'लिनक्स संकेत');खाता खाता 2 = नया खाता (नाम = 'पायथन');
नक्शा
खाता 1 => 1000, खाता 2 => 2000};
सिस्टम.डीबग (map_obj1);
नक्शा
//सभी रखें()
map_obj2.putAll (map_obj1);
सिस्टम.डीबग (map_obj2);
आउटपुट:
निष्कर्ष
मानचित्र एक डेटा संरचना है जो मुख्य रूप से ट्रिगर परिदृश्यों में उपयोग की जाती है और एक सूची की तरह सेल्सफोर्स डेटाबेस में एक समय में अधिक डेटा लोड करने में मदद करती है। मानचित्र में आइटम जोड़ने के लिए हमारे पास दो विकल्प हैं: put() और putAll() का उपयोग करना। एपेक्स मैप कलेक्शन से किसी विशेष आइटम को हटाने के लिए रिमूव () विधि का उपयोग किया जाता है। सभी वस्तुओं को हटाने के लिए स्पष्ट () विधि का उपयोग किया जाता है। साथ ही, हमने यह भी सीखा कि कैसे value() और keySet() मेथड का उपयोग करके वैल्यू और की को रिटर्न किया जाता है।