Salesforce Apex - نقشہ

Salesforce Apex Nqsh



Salesforce Apex map ایک ڈیٹا ڈھانچہ ہے جو بنیادی طور پر ٹرگر منظرناموں میں استعمال ہوتا ہے اور Salesforce ڈیٹا بیس میں فہرست کی طرح ایک وقت میں مزید ڈیٹا لوڈ کرنے میں مدد کرتا ہے۔ لیکن یہ ڈیٹا کو {key:value} پیئر فارمیٹ میں اسٹور اور منظم کرتا ہے۔ ہم اپیکس پروگرامنگ لینگویج میں نقشہ جمع کرنے اور اس کے طریقوں پر تبادلہ خیال کریں گے۔ یہاں، ہم تمام مثالوں کے لیے Salesforce میں اکاؤنٹ کا معیاری آبجیکٹ استعمال کریں گے۔ آئیے جلدی سے اس ٹیوٹوریل میں غوطہ لگائیں۔

نقشہ

نقشہ ان پٹ کے طور پر {key:value} جوڑا ڈیٹا لیتا ہے اور اسے Salesforce معیاری یا حسب ضرورت اشیاء میں اسٹور کرتا ہے۔ یہ sObject کو کلید یا قدر کے طور پر لے سکتا ہے۔







نقشہ کی تخلیق

آبجیکٹ کے نام کے ساتھ کلید اور قدر کی ڈیٹا کی قسمیں بتا کر، نقشہ بنایا جا سکتا ہے۔ یہاں، اسے بنانے کے لیے ایک نیا کلیدی لفظ استعمال کیا جاتا ہے۔ تخلیق کے دوران عناصر کو منتقل کرنا اختیاری ہوسکتا ہے۔



خالی نقشہ نحو:

نقشہ map_obj = نیا نقشہ():

عمومی نحو:

نقشہ map_obj = نیا نقشہ{

کلید => قدر،....}؛

آبجیکٹ نحو:

نقشہ map_obj = نیا نقشہ{

کلید => قدر،....}؛

یہاں، sObject ایک معیاری یا حسب ضرورت آبجیکٹ ہو سکتا ہے۔ اس پورے مضمون میں، ہم صرف 'اکاؤنٹ' کے آبجیکٹ کے ساتھ نقشے سے نمٹیں گے۔



آئیے ان طریقوں کو دیکھتے ہیں جو ایک ایک کرکے Apex 'نقشہ' کے مجموعہ سے تعاون یافتہ ہیں۔





ماحولیاتی سیٹ اپ

1. سیلز فورس میں جلدی سے لاگ ان کریں اور گیئر آئیکن پر کلک کرکے 'ڈیولپر کنسول' کھولیں۔



2. پھر، 'Debug' اور 'Open Execute Anonymous Window' پر کلک کرکے 'Anonymous ونڈو' کو کھولیں۔

عام مثال:

سب سے پہلے، ہم دو مضامین کے ساتھ ایک نقشہ بنا کر عمومی نقشہ کی تخلیق دیکھیں گے: 'سبجیکٹ_ آئی ڈی' جو ایک کلید کے طور پر کام کرتا ہے اور موضوع کے نام کے طور پر 'قدر'۔

Map programming=new Map {1=> 'Linux',2=> 'Python'};

system.debug(پروگرامنگ)؛

آؤٹ پٹ:

  1. 'Execute' پر کلک کریں۔
  2. 'صرف ڈیبگ' اختیار کو چیک کریں۔ آپ 'Execution Log' میں آؤٹ پٹ دیکھ سکتے ہیں۔

نقشہ کے طریقے

سب سے پہلے، ہم 'اکاؤنٹ' آبجیکٹ سے ایک نقشہ بناتے ہیں۔ ہم ایک ایک کر کے ناموں کے ساتھ تین اکاؤنٹ بناتے ہیں۔ پھر، ہم کلید اور قدر کے ساتھ نقشہ کا اعلان کرتے ہیں۔ ٹائپ کریں اور کچھ اقدار فراہم کرکے پچھلے تین اکاؤنٹس کو نقشے پر منتقل کریں۔

// نام کے ساتھ 3 اکاؤنٹس بنائیں

اکاؤنٹ اکاؤنٹ 1 = نیا اکاؤنٹ (نام = 'لینکس اشارہ')؛

اکاؤنٹ اکاؤنٹ 2 = نیا اکاؤنٹ (نام = 'سیلز فورس')؛

اکاؤنٹ اکاؤنٹ 3 = نیا اکاؤنٹ (نام = 'پائیتھن')؛

// اوپر والے اکاؤنٹس کو نقشہ_obj میں کلیدوں کے طور پر شامل کریں۔

نقشہ map_obj = نیا نقشہ{

اکاؤنٹ 1 => 1000، اکاؤنٹ 2 => 2000، اکاؤنٹ 3 => 3000}؛

System.debug(map_obj)؛

آؤٹ پٹ:

آپ دیکھ سکتے ہیں کہ 'map_obj' تین اکاؤنٹس کو اسٹور کرتا ہے۔

1. Map.values()

دیئے گئے نقشے سے صرف اقدار واپس کرنے کے لیے، ہم اقدار() طریقہ استعمال کر سکتے ہیں۔ یہ کوئی پیرامیٹرز نہیں لے گا۔ یہ صرف کوما سے الگ کی گئی اقدار کی فہرست لوٹاتا ہے۔

نحو:

map_object.values()

مثال:

آئیے پچھلے نقشے سے تمام اقدار واپس کرتے ہیں۔ اس بات کو یقینی بنائیں کہ آپ کو پچھلے مثال کے کوڈ پر عمل کرنے کی ضرورت ہے (تین اکاؤنٹس کے ساتھ ایک نقشہ بنائیں)۔ دوسری صورت میں، آپ کو ایک غلطی ملے گی. کوڈ کو کنسول میں بھی موجود ہونا چاہیے۔

// اقدار () کا استعمال کرتے ہوئے تمام کلیدوں کے لیے قدریں واپس کریں

System.debug(map_obj.values())؛

آؤٹ پٹ:

صرف تین کلیدیں ہیں: map_obj میں قدر کے جوڑے۔ قدریں ہیں: 1000، 2000، اور 3000۔

2. Map.keySet()

واپسی کی چابیاں نقشہ آبجیکٹ میں موجود ہیں۔ اقدار () کی طرح، اس طریقہ کار میں کوئی پیرامیٹر پاس کرنے کی ضرورت نہیں ہے۔

نحو:

map_object.keySet()

مثال:

آئیے پچھلے نقشے سے تمام چابیاں واپس کرتے ہیں۔ اس بات کو یقینی بنائیں کہ آپ پچھلے مثال کے کوڈ پر عمل کرتے ہیں (تین اکاؤنٹس کے ساتھ ایک نقشہ بنائیں)۔ دوسری صورت میں، آپ کو ایک غلطی ملے گی. کوڈ کو کنسول میں بھی موجود ہونا چاہیے۔

// keySet() کا استعمال کرتے ہوئے تمام کلیدیں واپس کریں

System.debug(map_obj.keySet())؛

آؤٹ پٹ:

صرف تین کلیدیں ہیں: map_obj میں قدر کے جوڑے۔ کلیدیں ہیں: {Account:{Name=Linux Hint}، Account:{Name=Python}، اور Account:{Name=Salesforce}۔

3. Map.size()

کچھ منظرناموں میں، ہمیں کل آئٹمز (کلیدی: قدر) کے جوڑوں کو جاننے کی ضرورت ہے جو ایپیکس نقشے میں موجود ہیں۔ Size() وہ طریقہ ہے جو نقشہ_آبجیکٹ میں موجود کل (کلیدی: قدر) جوڑوں کو لوٹاتا ہے۔ اس طریقہ کار کے لیے پیرامیٹرز کی ضرورت نہیں ہے۔

نحو:

map_object.size()

مثال:

پچھلے نقشہ آبجیکٹ کا سائز واپس کریں۔

// سائز () کا استعمال کرتے ہوئے جوڑوں کی کل تعداد واپس کریں

System.debug(map_obj.size())؛

آؤٹ پٹ:

چونکہ صرف 3 جوڑے ہیں، اس لیے لوٹا ہوا سائز () 3 ہے۔

4. Map.get()

کلید کا استعمال کرتے ہوئے نقشے سے اقدار تک رسائی get() طریقہ استعمال کرکے کی جاتی ہے۔ ایسا کرنے کے لیے، ہمیں کلید کو ایک پیرامیٹر کے طور پر get() طریقہ میں منتقل کرنا ہوگا۔ اگر کوئی نامعلوم کلید گزر جاتی ہے، تو یہ ایک خرابی لوٹاتا ہے۔

نحو:

map_object.get(key)

مثال:

کلید-2 اور کلید-1 کی قدروں کو الگ الگ لوٹائیں۔

// دوسری کلید کی قدر حاصل کریں۔

System.debug(map_obj.get(account2))؛

// پہلی کلید کی قدر حاصل کریں۔

System.debug(map_obj.get(account1))؛

آؤٹ پٹ:

یہاں، 2000 'Salesforce' کلید کی قدر ہے اور 1000 'Linux Hint' کلید کی قدر ہے۔

5. Map.clear()

ایک اپیکس میپ کلیکشن میں موجود تمام جوڑوں کو صاف () طریقہ استعمال کرتے ہوئے ایک وقت میں حذف کیا جا سکتا ہے۔ یہ کوئی پیرامیٹرز نہیں لے گا۔

نحو:

map_object.clear()

مثال:

پچھلے 'map_obj' میں جوڑوں کو ہٹا دیں۔

// واضح کرنے سے پہلے ()

System.debug(map_obj)؛

// صاف () کا استعمال کرتے ہوئے تمام جوڑوں کو ہٹا دیں

map_obj.clear();

// واضح ہونے کے بعد ()

System.debug(map_obj)؛

آؤٹ پٹ:

پہلے، 'map_obj' میں کلیدی قدر کے 3 جوڑے ہوتے ہیں۔ واضح () طریقہ کو لاگو کرنے کے بعد، تمام 3 کو حذف کر دیا جاتا ہے.

6. Map.equals()

ہم equals() طریقہ استعمال کرتے ہوئے دو نقشہ آبجیکٹ کا موازنہ کر سکتے ہیں۔ اگر تمام کلیدیں اور اقدار دونوں نقشہ آبجیکٹ میں یکساں ہوں تو سچ کی بولین ویلیو لوٹائی جاتی ہے۔ جب کہ فالس کی بولین ویلیو لوٹائی جاتی ہے اگر کم از کم ایک قدر مختلف ہو۔

نحو:

map_object1.equals(map_object2)

مثال:

آئیے ایک کلید کے ساتھ تین نقشہ آبجیکٹ بنائیں: ویلیو پیئر، ہر ایک 'اکاؤنٹ' آبجیکٹ کے حوالے سے۔ ان چیزوں کا آپس میں موازنہ کریں۔

// اکاؤنٹ -1

اکاؤنٹ اکاؤنٹ 1 = نیا اکاؤنٹ (نام = 'لینکس اشارہ')؛

نقشہ map_obj1 = نیا نقشہ{

اکاؤنٹ 1 => 1000}؛

System.debug('Map - 1:' + map_obj1);

// اکاؤنٹ -2

اکاؤنٹ اکاؤنٹ 2 = نیا اکاؤنٹ (نام = 'لینکس اشارہ')؛

نقشہ map_obj2 = نیا نقشہ{

account2 => 1000}؛

System.debug('Map - 2:' + map_obj1);

// اکاؤنٹ -3

اکاؤنٹ اکاؤنٹ 3 = نیا اکاؤنٹ (نام = 'پائیتھن')؛

نقشہ map_obj3 = نیا نقشہ{

account3 => 2000}؛

System.debug('Map - 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() طریقہ استعمال کرکے چیک کرسکتے ہیں کہ نقشہ خالی ہے یا نہیں۔ اگر Apex نقشہ کا مجموعہ خالی ہے تو True واپس آ جاتا ہے۔ دوسری صورت میں، غلط واپس آ جائے گا. سائز() طریقہ کی طرح، یہ کوئی پیرامیٹر نہیں لے گا۔

نحو:

map_object.isEmpty()

مثال:

آئیے دو نقشہ آبجیکٹ بنائیں جو 'اکاؤنٹ' سے متعلق ہیں اور چیک کریں کہ آیا یہ دونوں خالی ہیں یا نہیں۔

// اکاؤنٹ -1

اکاؤنٹ اکاؤنٹ 1 = نیا اکاؤنٹ (نام = 'لینکس اشارہ')؛

نقشہ map_obj1 = نیا نقشہ{

اکاؤنٹ 1 => 1000}؛



// اکاؤنٹ -2

نقشہ map_obj2 = نیا نقشہ();

// خالی ہے()

System.debug('Map-1 خالی ہے:'+map_obj1.isEmpty())؛

System.debug('Map-2 خالی ہے: '+map_obj2.isEmpty());

آؤٹ پٹ:

پہلا نقشہ خالی نہیں ہے کیونکہ اس میں ایک کلیدی قدر کا جوڑا ہے۔ دوسرا نقشہ خالی ہے کیونکہ اس میں کوئی نہیں ہے۔

8. Map.remove()

اپیکس میپ کلیکشن میں ریمو () طریقہ کلید کی بنیاد پر ایک خاص کلیدی قدر کے جوڑے کو ہٹانے کے لیے استعمال کیا جاتا ہے جو اس میں بطور پیرامیٹر بیان کی گئی ہے۔ اگر کلید موجود نہیں ہے تو، ایک غلطی اٹھائی جاتی ہے۔

نحو:

map_object.remove(key)

مثال:

آئیے دو آئٹمز کے ساتھ ایک نقشہ بنائیں اور پہلی آئٹم کو ہٹا دیں۔

اکاؤنٹ اکاؤنٹ 1 = نیا اکاؤنٹ (نام = 'لینکس اشارہ')؛

اکاؤنٹ اکاؤنٹ 2 = نیا اکاؤنٹ (نام = 'پائیتھن')؛

نقشہ map_obj = نیا نقشہ{

اکاؤنٹ 1 => 1000، اکاؤنٹ 2 => 4000}؛

System.debug('موجودہ نقشہ'+ map_obj);

//دور()

map_obj.remove(account1)؛

System.debug('پہلی شے کو ہٹانے کے بعد:'+map_obj)؛

آؤٹ پٹ:

نقشے سے پہلی آئٹم کو ہٹانے کے بعد، صرف ایک آئٹم موجود ہے – {Account:{Name=Python}=4000}۔

9. Map.put()

اس طریقہ کو استعمال کرتے ہوئے، ہم ایک وقت میں نقشہ آبجیکٹ میں براہ راست ایک آئٹم شامل کر سکتے ہیں۔ یہ دو پیرامیٹرز کو قبول کرتا ہے: 'کلید' پہلا پیرامیٹر ہے جبکہ 'ویلیو' دوسرا پیرامیٹر ہے۔

نحو:

map_object.put(کلید، قدر)

مثال:

آئیے ایک کلیدی قدر کے جوڑے کے ساتھ ایک نقشہ بنائیں۔ پھر، ہم 'اکاؤنٹ 2' داخل کرنے کے لیے 'put' طریقہ استعمال کرتے ہیں۔

// اکاؤنٹ -1

اکاؤنٹ اکاؤنٹ 1 = نیا اکاؤنٹ (نام = 'لینکس اشارہ')؛

نقشہ map_obj1 = نیا نقشہ{

اکاؤنٹ 1 => 1000}؛

System.debug('اصل نقشہ: '+map_obj1);

// اکاؤنٹ -2

اکاؤنٹ اکاؤنٹ 2 = نیا اکاؤنٹ (نام = 'پائیتھن')؛

// ڈال ()

map_obj1.put(account2,2000);

System.debug('حتمی نقشہ: '+map_obj1);

آؤٹ پٹ:

پہلے، نقشے میں صرف ایک کلیدی قدر کا جوڑا ہے جو کہ {Account:{Name=Linux Hint}=1000} ہے۔ 'اکاؤنٹ2' کو شامل کرنے کے بعد، حتمی نقشے میں کلیدی قدر کے دو جوڑے ہیں جو کہ {Account:{Name=Linux Hint}=1000 اور Account:{Name=Python}=2000} ہیں۔

10. Map.putAll()

اس طریقہ کو استعمال کرتے ہوئے، ہم ایک وقت میں نقشہ آبجیکٹ میں براہ راست ایک یا ایک سے زیادہ آئٹمز شامل کر سکتے ہیں۔ یہ نقشہ جمع کرنے والی چیز کو پیرامیٹر کے طور پر لیتا ہے۔

نحو:

map_object1.putAll(map_object2)

مثال:

آئیے دو کلیدی قدر کے جوڑوں کے ساتھ ایک نقشہ بنائیں اور بغیر کسی آئٹم کے دوبارہ ایک خالی نقشہ آبجیکٹ بنائیں۔ پہلے میپ آبجیکٹ میں دستیاب آئٹمز کو دوسرے میپ آبجیکٹ میں شامل کرنے کے لیے putAll() طریقہ استعمال کریں۔

اکاؤنٹ اکاؤنٹ 1 = نیا اکاؤنٹ (نام = 'لینکس اشارہ')؛

اکاؤنٹ اکاؤنٹ 2 = نیا اکاؤنٹ (نام = 'پائیتھن')؛

نقشہ map_obj1 = نیا نقشہ{

اکاؤنٹ 1 => 1000، اکاؤنٹ 2 => 2000}؛

System.debug(map_obj1)؛

نقشہ map_obj2 = نیا نقشہ();

//putAll()

map_obj2.putAll(map_obj1)؛

System.debug(map_obj2)؛

آؤٹ پٹ:

نتیجہ

نقشہ ایک ڈیٹا ڈھانچہ ہے جو بنیادی طور پر ٹرگر منظرناموں میں استعمال ہوتا ہے اور سیلز فورس ڈیٹا بیس میں فہرست کی طرح ایک وقت میں مزید ڈیٹا لوڈ کرنے میں مدد کرتا ہے۔ نقشے میں اشیاء کو شامل کرنے کے لیے ہمارے پاس دو اختیارات ہیں: put() اور putAll() کا استعمال۔ Remove() طریقہ ایپکس میپ کلیکشن سے کسی خاص آئٹم کو ہٹانے کے لیے استعمال کیا جاتا ہے۔ واضح () طریقہ تمام اشیاء کو حذف کرنے کے لیے استعمال کیا جاتا ہے۔ اس کے علاوہ، ہم نے سیکھا کہ اقدار() اور keySet() طریقوں کا استعمال کرتے ہوئے اقدار اور کلیدوں کو کیسے واپس کیا جائے۔