CodeGym /جاوا بلاگ /Random-SD /جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن...
John Squirrels
سطح
San Francisco

جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا. حصو 10

گروپ ۾ شايع ٿيل
سلام ڪنهن شيءِ تي ماسٽر ٿيڻ ۾ ڪيترا ڪلاڪ لڳن ٿا؟ مون اڪثر ڪجهه ٻڌو آهي جهڙوڪ: "ڪنهن به شيء تي ماسٽر ٿيڻ لاء، توهان کي ان تي 10,000 ڪلاڪ خرچ ڪرڻ جي ضرورت آهي." اهو هڪ خوفناڪ نمبر آهي، ڇا اهو ناهي؟ جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 10 - 1اڃان تائين، مون کي تعجب آهي ته ڇا اهو سچ آهي. ۽ مان مسلسل اهو معلوم ڪرڻ جي ڪوشش ڪري رهيو آهيان ته مون پروگرامنگ جي فن ۾ مهارت حاصل ڪرڻ ۾ ڪيترا ڪلاڪ اڳ ۾ ئي خرچ ڪيا آهن. ۽ جڏهن مان 10,000 ڪلاڪن جي ان خاص لڪير کي پار ڪري هڪ ماسٽر بڻجي ويندس، ڇا مون کي فرق محسوس ٿيندو؟ يا مون ان لڪير کي گهڻو وقت اڳ ئي پار ڪيو هو ان کي سمجهڻ کان سواءِ؟ ڪنهن به صورت ۾، توهان کي پروگرامر بڻجڻ لاءِ ايتري وڏي رقم خرچ ڪرڻ جي ضرورت ناهي. اهم شيء توهان جي وقت کي عقلمندي سان استعمال ڪرڻ آهي. توهان جو بنيادي مقصد هڪ انٽرويو حاصل ڪرڻ آهي. ۽ انٽرويو ۾، سافٽ ويئر ڊولپرز کي پهريون ڀيرو نظريي جي باري ۾ پڇيو ويندو آهي، تنهنڪري اهو هڪ مضبوط ٿيڻ جي ضرورت آهي. حقيقت ۾، جيئن توهان هڪ انٽرويو لاء تيار ڪيو، توهان جو ڪم بنيادي جاوا نظريي جي ڄاڻ ۾ سڀني خالن کي ڳولڻ ۽ پوء انهن کي ڀرڻ آهي. اڄ مان هتي آهيان توهان جي مدد ڪرڻ لاءِ صرف اهو ڪرڻ لاءِ، اڄ کان وٺي اسان سڀ کان مشهور انٽرويو سوالن جو جائزو جاري رکنداسين. خير، اچو ته جاري رکون!

89. هڪ ArrayList ڪيئن هڪ LinkedList کان مختلف آهي؟

هي هڪ تمام مشهور سوالن مان هڪ آهي، انهي سان گڏ هڪ HashMap جي اندروني جوڙجڪ بابت سوال . ان کان سواءِ ڪو به انٽرويو مڪمل نه ٿيندو آهي، تنهن ڪري توهان جو جواب آسانيءَ سان توهان جي زبان بند ٿيڻ گهرجي. پڌري کان علاوه (انهن جا نالا مختلف آهن)، اهي انهن جي اندروني جوڙجڪ ۾ مختلف آهن. ان کان اڳ، اسان ArrayList ۽ LinkedList ٻنهي جي اندروني ڍانچي تي بحث ڪيو ، تنھنڪري مان انھن تي عمل درآمد جي تفصيلن ۾ ڊاھ نه ڪندس. مان صرف توهان کي ياد ڏياريندس ته ArrayList هڪ اندروني صف استعمال ڪندي لاڳو ڪئي وئي آهي جنهن جي سائيز هن فارمولا جي مطابق متحرڪ طور تي وڌائي ٿي:
<size of the current array> * 3 / 2 + 1
اضافي طور تي، هڪ LinkedList جي عمل درآمد هڪ اندروني ٻيڻو ڳنڍيل فهرست استعمال ڪري ٿو، اهو آهي، هر عنصر کي پوئين ۽ ايندڙ عناصر جو حوالو آهي، سواء فهرست جي شروعات ۽ آخر ۾ عناصر جي. انٽرويو وٺندڙ هن سوال کي هن طرح پڇڻ پسند ڪندا آهن، "ڪهڙو بهتر آهي، ArrayList يا LinkedList ؟" توهان کي پڪڙڻ جي اميد آهي. آخرڪار، جيڪڏهن توهان چئو ته هڪ يا ٻيو بهتر آهي، پوء توهان غلط جواب ڏنو آهي. جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 10 - 2ان جي بدران، توهان کي مخصوص صورتحال کي واضح ڪرڻ گهرجي جنهن بابت توهان ڳالهائي رهيا آهيو: انڊيڪس ذريعي عناصر تائين رسائي يا فهرست جي وچ ۾ داخل ڪرڻ. پوء، انهن جي جواب تي منحصر ڪري، توهان وضاحت ڪري سگهو ٿا ته ڪهڙو بهتر آهي. مون اڳ ۾ بيان ڪيو ته ڪيئن ArrayList ۽ LinkedList هر صورتحال ۾ ڪم. اچو ته ان کي اختصار ڪريون انهن کي مقابلي لاءِ قطار ۾ رکي: هڪ عنصر شامل ڪرڻ (شامل ڪريو)
  1. جيڪڏهن هڪ انڊيڪس بيان نه ڪيو ويو آهي، ته پوء هڪ نئين شيء خودڪار طور تي ٻنهي قسمن جي فهرستن جي آخر ۾ شامل ڪيو ويندو. هڪ LinkedList ۾ ، نئون عنصر نئين دم بڻجي ويندو (صرف حوالن جو هڪ جوڙو ٻيهر لکيو ويندو، تنهنڪري الگورٿمڪ پيچيدگي O(1) آهي ).

    شامل ڪرڻ جو طريقو صف ۾ آخري خالي سيل ۾ هڪ عنصر شامل ڪري ٿو ( O(1) ).

  2. انڊيڪس ذريعي هڪ شيون شامل ڪرڻ عام طور تي ان کي لسٽ جي وچ ۾ ڪٿي داخل ڪرڻ جو مطلب آهي. هڪ LinkedList ۾ ، طريقو پهريون ڀيرو مطلوبه مقام جي ڳولا ڪندو tail and head ( O(n/2) ) کان عناصرن جي مٿان ورجائيندي ۽ پوءِ قدر داخل ڪندو عنصرن جي حوالن کي اوور رائٽ ڪندي ٻنهي پاسن تي جتي. نئون عنصر داخل ڪيو ويو آهي ( O(1) ). هن آپريشن جي مجموعي الگورٿمڪ پيچيدگي O(n/2) هوندي .

    ساڳئي صورتحال ۾ (انڊيڪس ذريعي شامل ڪرڻ)، هڪ ArrayList گهربل هنڌ ڳولي ٿو ( O(1) ) ۽ پوءِ ساڄي پاسي واقع سمورن عنصرن کي (جنهن ۾ اڳ ۾ ئي مخصوص انڊيڪس تي ذخيرو ٿيل عنصر شامل آهي) هڪ طرف ساڄي طرف شفٽ ڪري ٿو (جيڪو ٿي سگھي ٿو ھڪڙي نئين اندروني صف جي ٺاھڻ ۽ ان ۾ عناصر کي نقل ڪرڻ) ( O(n/2) ). مجموعي پيچيدگي O(n/2) آهي .

  3. LinkedList جي شروعات ۾ هڪ عنصر شامل ڪرڻ هڪ عنصر کي آخر ۾ شامل ڪرڻ جي برابر آهي: نئون عنصر نئين سر ( O(1) ) بڻجي ويندو آهي. پر هڪ ArrayList لاءِ، انهي آپريشن جي ضرورت آهي سڀني عناصر کي ساڄي طرف ( O(n) ).

هيٺئين لائن اها آهي ته هڪ LinkedList لاءِ الورورٿمڪ پيچيدگي O(1) کان O(n/2) تائين هوندي . ٻيو مشاهدو اهو آهي ته اندراج لسٽ جي آخر يا شروعات کي جيترو ويجهو هوندو، اوترو تيز هوندو. ArrayList لاءِ ، الورورٿمڪ پيچيدگي جي حد O(1) کان O(n) تائين آهي، ۽ لسٽ جي آخر تائين اندراج جيتري ويجھو هوندو، اوترو تيز هوندو. هڪ عنصر کي ترتيب ڏيڻ (سيٽ) هي آپريشن هڪ عنصر کي فهرست ۾ مخصوص پوزيشن ڏانهن لکندو آهي، ڪنهن به موجود عنصر کي ختم ڪندي. هڪ LinkedList ۾ ، هي آپريشن شامل ڪرڻ جي برابر آهي، ڇاڪاڻ ته هتي سڀ کان وڏو چئلينج عنصر جي مقام کي ڳولڻ آهي. موجوده عنصر کي حوالن جي هڪ جوڙي کي اپڊيٽ ڪرڻ سان اوور رائٽ ڪيو ويو آهي، تنهنڪري اسان وٽ ٻيهر هڪ الگورٿمڪ پيچيدگي آهي جيڪا O(1) کان O(n/2) تائين مختلف آهي ، فهرست جي آخر يا شروعات کان مطلوب پوزيشن جي فاصلي تي منحصر آهي. پر هڪ ArrayList لاءِ ، هي آپريشن گهربل سيل ڳولي ٿو انڊيڪس ذريعي ۽ اتي نئون عنصر لکي ٿو. سيٽ آپريشن وانگر، انڊيڪس جي ڳولا ۾ O(1) جي الگورتھمڪ پيچيدگي آهي . انڊيڪس ذريعي هڪ عنصر حاصل ڪرڻ (حاصل) LinkedList مان هڪ عنصر حاصل ڪرڻ ساڳئي ڳولا اصول تي عمل ڪري ٿو جيڪو ٻين عملن ۾ استعمال ڪيو ويندو آهي. پيچيدگي جو دارومدار آخر يا شروعات کان فاصلي تي آهي، يعني اهو O(1) کان O(n/2) تائين مختلف ٿئي ٿو . جيئن اڳ ذڪر ڪيو ويو آهي، هڪ ArrayList لاء ، اندروني صف ۾ انڊيڪس ذريعي هڪ عنصر ڳولڻ O(1) جي پيچيدگي آهي . انڊيڪس ذريعي هڪ عنصر کي هٽائڻ (هٽايو) LinkedList لاء ، ساڳيو اصول هڪ ڀيرو ٻيهر لاڳو ٿئي ٿو. پهرين، عنصر واقع آهي، ۽ پوء حوالا ٻيهر لکيا ويا آهن، ختم ٿيل عنصر جا پاڙيسري هاڻي هڪ ٻئي ڏانهن اشارو ڪن ٿا، حذف ٿيل عنصر جي حوالن کي ختم ڪندي، جيڪو بعد ۾ گندگي ڪليڪٽر طرفان صاف ڪيو ويندو. ٻين لفظن ۾، algorithmic پيچيدگي اڃا به ساڳيو آهي - اهو مختلف آهي O(1) کان O(n/2) تائين . ArrayList لاءِ ، ھي آپريشن وڌيڪ آھي ھڪڙو نئون عنصر شامل ڪرڻ (شامل ڪريو). پهريون، طريقو مطلوب عنصر ڳولي ٿو ( O(1) )، ان کي هٽائي ٿو، ۽ پوء سڀني عناصر کي ساڄي طرف واقع هڪ قدم کاٻي طرف منتقل ڪيو ويو آهي ته هٽائڻ جي ذريعي پيدا ٿيل خلا کي بند ڪرڻ لاء. هڪ عنصر کي هٽائڻ ۾ ساڳيو الورورٿمڪ پيچيدگي آهي جيئن اضافو آپريشن - O(1) کان O(n) تائين. فهرست جي آخر تائين ختم ٿيل عنصر جي ويجهو آهي، هن آپريشن جي الورورٿمڪ پيچيدگي گهٽ آهي. ۽ ھاڻي اسان سڀني مکيه عملن کي ڍڪي ڇڏيو آھي. مان توهان کي ياد ڏياريان ته انهن ٻن قسمن جي فهرستن جو مقابلو ڪرڻ وقت، توهان کي مخصوص صورتحال کي واضح ڪرڻ جي ضرورت آهي جنهن ۾ اهي استعمال ڪيا ويا آهن. صرف ان کان پوء توهان انٽرويو وٺندڙ جي سوال جو جواب ڏئي سگهو ٿا.

90. ڪيئن هڪ ArrayList هڪ HashSet کان مختلف آهي؟

جيڪڏهن اسان ArrayList ۽ LinkedList جو مقابلو ڪري سگهون ٿا آپريشن جي بنياد تي آپريشن جي بنياد تي اهو طئي ڪرڻ لاءِ ته ڪهڙو بهتر آهي، اسان کي اهو آسان نه ٿيندو ته اهڙو مقابلو ArrayList ۽ HashSet جي وچ ۾ ، ڇاڪاڻ ته اهي مڪمل طور تي مختلف مجموعا آهن. توهان هڪ شيرين کي ٻئي سان ڀيٽ ڪري سگهو ٿا، پر هڪ مٺاڻ ۽ هڪ مٺي ڊش جو مقابلو ڪرڻ هڪ چئلينج آهي - اهي دردناڪ طور تي مختلف آهن. تنهن هوندي به، مان انهن جي وچ ۾ ڪجهه اختلافن جي نشاندهي ڪرڻ جي ڪوشش ڪندس:
  • ArrayList لسٽ انٽرفيس کي لاڳو ڪري ٿو جڏهن ته HashSet سيٽ انٽرفيس کي لاڳو ڪري ٿو .

  • ArrayList توهان کي انڊيڪس ذريعي هڪ عنصر تائين رسائي جي اجازت ڏئي ٿي: حاصل آپريشن ۾ O(1) الگورتھمڪ پيچيدگي آهي، پر HashSet صرف توهان کي گهربل عنصر تائين رسائي جي اجازت ڏئي ٿي، جيڪا O(1) کان O(n) تائين جي الگورتھم پيچيدگي پيدا ڪري ٿي .

  • ArrayList اجازت ڏئي ٿو نقلي عناصر. HashSet ۾ ، سڀئي عنصر منفرد آھن: ھڪڙو عنصر شامل ڪرڻ جي ڪا به ڪوشش جيڪا اڳ ۾ ئي موجود آھي HashSet ۾ ناڪام ٿي ويندي (نقليات کي hashcode ذريعي چيڪ ڪيو ويندو آھي، تنھنڪري ھن مجموعي جو نالو).

  • ArrayList هڪ اندروني صف استعمال ڪندي لاڳو ڪيو ويو آهي، پر HashSet هڪ اندروني HashMap استعمال ڪندي لاڳو ڪيو ويو آهي .

  • ArrayList عناصر جي داخل ٿيڻ جي ترتيب کي برقرار رکي ٿو، پر HashSet ھڪڙو غير ترتيب ڏنل سيٽ آھي ۽ عناصر جي ترتيب کي برقرار نٿو رکي.

  • ArrayList ڪنهن به نمبر جي نالن جي قيمت جي اجازت ڏئي ٿي، پر توهان صرف هڪ نال قدر شامل ڪري سگهو ٿا HashSet (سڀني کان پوء، عناصر منفرد هجڻ گهرجن).

91. ڇو جاوا ۾ ڪيتريون ئي مختلف متحرڪ صفون لاڳو ٿين ٿيون؟

اهو وڌيڪ فلسفياڻو سوال آهي. اسان اهو پڻ پڇي سگهون ٿا ته اهي ڪيتريون ئي نيون ۽ مختلف ٽيڪنالاجيون ڇو آهن؟ سهولت لاءِ. ۽ ساڳئي شيء وڏي تعداد ۾ متحرڪ صف جي عملن جي باري ۾ صحيح آهي. انهن مان ڪنهن کي به بهترين يا مثالي عمل نه ٿو چئي سگهجي. انهن مان هر هڪ پنهنجي مخصوص حالتن ۾ فائدا آهن. اسان جو ڪم آهي انهن جي اختلافن ۽ انهن جي قوتن/ ڪمزورين کي ڄاڻڻ لاءِ انهي مجموعن کي استعمال ڪرڻ جي قابل ٿي جيڪو ڪنهن به ڏنل صورتحال لاءِ تمام موزون هجي.

92. جاوا ۾ ڪيتريون ئي مختلف ڪي-ويليو اسٽوريج لاڳو ڪرڻ ڇو آهن؟

هتي صورتحال ساڳي آهي جيئن متحرڪ صف لاڳو ڪرڻ سان. يقيناً ڪو به نه آهي جيڪي عالمي طور تي ٻين کان بهتر آهن: هر هڪ ۾ طاقت ۽ ڪمزوريون آهن. ۽ اسان کي ضرور انهن جي قوتن جو ڀرپور فائدو وٺڻ گهرجي. مثال: سمورو پيڪيج، جنهن ۾ ڪيترائي ملٽي ٿريڊ ڪلاس آهن، ان جو پنهنجو سمورو مجموعو آهي. ConcurrentHashMap ڪلاس کي حفاظت جي لحاظ کان معياري HashMap تي هڪ فائدو آهي جڏهن ڊيٽا سان گڏ ملٽي ٿريڊ ٿيل ماحول ۾ ڪم ڪري ٿو، پر اهو سست ڪارڪردگي جي قيمت تي اچي ٿو . ۽ عمل درآمد جيڪي ڪنهن به صورتحال ۾ بهترين انتخاب نه هوندا آهن آهستي آهستي استعمال ٿيڻ بند ٿي ويندا آهن. مثال طور: Hashtable ، جيڪو اصل ۾ ٿريڊ-سيف HashMap ٿيڻ جو ارادو ڪيو ويو هو ، وساريو ويو آهي ۽ استعمال کان ٻاهر ٿي ويو آهي، ڇاڪاڻ ته ConcurrentHashMap هڪ کان وڌيڪ موضوع واري ماحول ۾ ڪم ڪرڻ دوران Hashtable کان به بهتر آهي .

93. مان عناصر جي مجموعي کي ڪيئن ترتيب ڏيان؟

چوڻ لاءِ پهرين ڳالهه اها آهي ته ڪلاس جي نمائندگي ڪندڙ مجموعي عناصر کي لازمي انٽرفيس لاڳو ڪرڻ گهرجي، جيڪو compareTo طريقو تي مشتمل آهي. يا توهان کي هڪ ڪلاس جي ضرورت آهي جيڪا Comparator انٽرفيس کي لاڳو ڪري، بشمول ان جي compare طريقو. ٻئي طريقا ظاهر ڪن ٿا ته ڏنل قسم جي شين جو مقابلو ڪيئن ڪجي. اهو ضروري آهي جڏهن ترتيب ڏيو، ڇو ته ترتيب ڏيڻ واري الگورتھم کي سمجهڻ جي ضرورت آهي ته عناصر جي مقابلي لاء ڪهڙو اصول استعمال ڪيو وڃي. اهو بنيادي طور تي لاڳو ڪرڻ سان ڪيو ويندو آهي Comparable سڌو ڪلاس ۾ جنهن کي توهان ترتيب ڏيڻ چاهيو ٿا. Comparator استعمال ڪرڻ گهٽ عام آهي. فرض ڪريو ته توهان ڪنهن لائبريري مان هڪ ڪلاس استعمال ڪري رهيا آهيو ۽ اهو لاڳو نٿو ٿئي Comparable ، پر توهان کي ان جي شين جي مجموعي کي ترتيب ڏيڻ جي ضرورت آهي. جيئن ته توهان هن ڪلاس جو ڪوڊ تبديل نٿا ڪري سگهو (سواءِ ان کي وڌائڻ جي)، توهان لکي سگهو ٿا Comparator جو عمل جيڪو ڏيکاري ٿو ڪلاس جي شين جو مقابلو ڪيئن ڪجي. ۽ هڪ وڌيڪ مثال. جيڪڏهن توهان کي ضرورت آهي ته هڪ ئي قسم جي شين کي مختلف طريقن سان ترتيب ڏيو، ته پوءِ توهان مختلف حالتن ۾ استعمال ڪرڻ لاءِ هڪ کان وڌيڪ Comparator عملدرآمد لکي سگهو ٿا. ضابطي جي طور تي، ڪيتريون ئي ٻاهريون ڪلاسون، مثال طور String ، اڳ ۾ ئي Comparable انٽرفيس کي لاڳو ڪري ٿو . ان جو مطلب اهو آهي ته توهان کي پريشان ٿيڻ جي ضرورت ناهي ته انهن طبقن جو مقابلو ڪيئن ڪجي. توهان صرف اڳتي وڃو ۽ انھن کي استعمال ڪري سگهو ٿا. پهريون ۽ سڀ کان وڌيڪ واضح طريقو استعمال ڪرڻ آهي TreeSet يا TreeMap ڪلاس. اهي ڪلاس عناصر کي ترتيب ڏنل ترتيب ۾ ذخيرو ڪن ٿا ڪلاس عناصر پاران لاڳو ڪيل موازنہ جي بنياد تي. اهو نه وساريو ته TreeMap ڪنجيون ترتيب ڏئي ٿو، نه قدر. جيڪڏهن توهان Comparable جي بدران Comparator استعمال ڪريو ٿا، ته پوءِ توهان کي هڪ Comparator اعتراض جمع ڪرڻ جي ڪنسٽرڪٽر ڏانهن منتقل ڪرڻو پوندو جڏهن توهان ان کي ٺاهيو ٿا:
TreeSet treeSet = new TreeSet(customComparator);
پر ڇا جيڪڏهن توهان وٽ مختلف قسم جو مجموعو آهي؟ توهان ان کي ڪيئن ترتيب ڏيو ٿا؟ انهي حالت ۾، ڪليڪشن يوٽيلٽي ڪلاس جو ٻيو طريقو - ترتيب () طريقو - مناسب آهي. طريقو جامد آهي، تنهنڪري توهان سڀني کي ضرورت آهي ڪلاس جو نالو اڳ ۾ رکڻو آهي ۽ پوء ترتيب ڏيڻ لاء لسٽ ۾ پاس ڪريو. مثال طور:
Collections.sort(someList);
جيڪڏهن توهان Comparable جي بجاءِ Comparator جو عمل استعمال ڪري رهيا آهيو ، ته پوءِ توهان کي ان کي ٻئي دليل طور پاس ڪرڻ جي ضرورت آهي:
Collections.sort(someList, customComparator);
هي آپريشن پاس ڪيل لسٽ ۾ عناصر جي اندروني ترتيب کي تبديل ڪندو: فهرست کي ترتيب ڏيڻ وارو استعمال ڪندي ترتيب ڏني ويندي. نوٽ ڪريو ته منظور ٿيل لسٽ لازمي طور تي تبديل ٿيڻ گھرجي، ٻي صورت ۾ طريقو ناڪام ٿي ويندو ۽ UnsupportedOperationException اڇلائي ڇڏيندو . ٽيون آپشن استعمال ڪرڻ آهي اسٽريم ڪلاس جي ترتيب ڏنل طريقي کي، جيڪو مجموعي جي عناصر کي ترتيب ڏئي ٿو . جيڪڏهن اسان استعمال ڪري رهيا آهيون Comparable :
someList = someList.stream().sorted().collect(Collectors.toList());
جيڪڏهن اسان استعمال ڪري رهيا آهيون Comparator :
someList = someList.stream().sorted(customComparator).collect(Collectors.toList());
چوٿون طريقو دستي طور تي ترتيب ڏيڻ واري الگورتھم کي لاڳو ڪرڻ آهي، مثال طور، بلبل ترتيب يا ضم ڪرڻ .

اعتراض ڪلاس. برابر() ۽ hashCode()

94. جاوا ۾ Object class جي مختصر وضاحت ڏيو.

جائزي جي ٻئي حصي ۾ ، اسان اڳ ۾ ئي بحث ڪيو آهي اعتراض ڪلاس جي طريقن. هتي مان توهان کي ياد ڏيندس ته Object class جاوا ۾ هر طبقي جو هڪ اباڙ آهي. ان ۾ 11 طريقا آهن، جيڪي سڀني طبقن کي ورثي ۾ مليا آهن. جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 10 - 3

95. جاوا ۾ برابر () ۽ hashCode() ڇا استعمال ڪيا ويا آهن؟

hashCode() Object class جو هڪ طريقو آهي جيڪو سڀني طبقن کان ورثي ۾ ملي ٿو. ان جو ڪم ھڪڙو نمبر پيدا ڪرڻ آھي جيڪو ھڪڙي خاص اعتراض جي نمائندگي ڪري ٿو. عمل ۾ هن طريقي جو هڪ مثال HashMap ۾ ڳولهي سگهجي ٿو ، جتي اهو مقامي هيش ڪوڊ حاصل ڪرڻ لاء اهم شين تي سڏيو ويندو آهي، جيڪو اهو طئي ڪندو ته ڪهڙي بالٽ (اندروني صف جي سيل) ۾ اهم-قدر جوڙو محفوظ ڪيو ويندو. پڻ، هي طريقو عام طور تي استعمال ڪيو ويندو آهي equals() طريقي ۾ ان جي مکيه طريقن مان هڪ آهي شين کي سڃاڻڻ لاءِ. equals() آبجیکٹ ڪلاس جو هڪ طريقو آهي جنهن جو ڪم شين جو مقابلو ڪرڻ ۽ اهو طئي ڪرڻ آهي ته ڇا اهي برابر آهن. هي طريقو هر هنڌ استعمال ڪيو ويندو آهي جتي اسان کي شين جو مقابلو ڪرڻ جي ضرورت آهي، ڇاڪاڻ ته معياري == موازنہ آپريٽر شين لاء مناسب ناهي، ڇاڪاڻ ته اهو صرف اعتراض جي حوالن جي مقابلي ۾ آهي.

96. اسان کي جاوا ۾ equals() ۽ hashCode() جي وچ ۾ معاهدي بابت ٻڌايو؟

پهرين، مون کي اهو چوڻ ڏيو ته برابر () ۽ hashCode () طريقن کي صحيح طريقي سان ڪم ڪرڻ لاء ، انهن کي صحيح طور تي ختم ڪيو وڃي. انهن جي نئين عملن کي انهن قاعدن جي پيروي ڪرڻ گهرجي:
  • هڪجهڙائي واريون شيون جن لاءِ هڪجهڙائي واپسي صحيح آهي انهن وٽ ساڳيو هيش ڪوڊ هجڻ لازمي آهي .
  • ساڳيا هيش ڪوڊ سان شيون لازمي طور تي برابر نه آهن .
ھاڻي لڳي ٿو ھڪڙي سٺي جڳھ کي روڪڻ لاءِ جيستائين جائزو جي ايندڙ حصي تائين!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION