JavaRush /جاوا بلاگ /Random-SD /صفر-لمبائي واري صف کي واپس ڏيو، نڪي null
alexnjc
سطح

صفر-لمبائي واري صف کي واپس ڏيو، نڪي null

گروپ ۾ شايع ٿيل
گهڻو ڪري اهڙا طريقا آهن جيڪي هن طرح نظر اچن ٿا:
private List cheesesInStock =;
/**
* @return массив, содержащий все сыры, имеющиеся в магазине,
* or null, если сыров для продажи нет.
*/
public Cheese[] getCheeses() {
if (cheesesInStock.size() == 0)
return null;
}
اتي ڪو به سبب نه آهي ته هڪ خاص ڪيس جي حيثيت سان علاج ڪرڻ جي صورت ۾، جتي وڪرو تي پنير ناهي. انهي جي ضرورت آهي ڪلائنٽ کي اضافي ڪوڊ لکڻ لاءِ طريقي جي واپسي جي قيمت کي پروسيس ڪرڻ لاءِ пull، مثال طور:
Cheese[] cheeses = shop.getCheeses();
if (cheeses ! = пull &&
Аrrауs.аsList(shор.gеtСhееsеs()).соntаins(Сhееsе.SТILТON))
Sуstеm.оut.рrintln("Jоllу good, just the thing.");
سادي بدران:
if  (Аrrаys.аsList(shор.gеtСhееsеs()).соntаins(Сhееsе.SТILTON)) Sуstеm.оut.рrintln("Jоllу good, just the thing.");
اهڙي قسم جي فعل لازمي آهي تقريبن هر طريقي واري ڪال لاءِ جيڪا صفر-لمبائي واري صف جي بدران null موٽائي ٿي. اهو غلطين سان ڀريل آهي، ڇاڪاڻ ته ڪلائنٽ ڊولپر شايد نتيجو پروسيس ڪرڻ لاء خاص ڪوڊ نه لکيو آهي null. غلطي سالن تائين اڻڄاتل ٿي سگهي ٿي ڇاڪاڻ ته اهڙا طريقا عام طور تي هڪ يا وڌيڪ شيون واپس آڻيندا آهن. اهو پڻ ذڪر ڪيو وڃي ٿو ته nullهڪ صف جي بدران واپسي طريقي جي پيچيدگي جي ڪري ٿي جيڪا صف کي واپس ڪري ٿي. ڪڏهن ڪڏهن اهو دليل ڏنو ويندو آهي ته واپسي null هڪ صفر-لمبائي واري صف کي واپس ڪرڻ کان بهتر آهي ڇاڪاڻ ته اهو ميموري ۾ صف مختص ڪرڻ جي خرچ کان بچي ٿو. هي دليل ٻن سببن جي ڪري ناڪام ٿئي ٿو. پهرين، هن سطح تي ڪارڪردگي بابت پريشان ٿيڻ جو ڪو به مطلب ناهي جيستائين پروگرام جي پروفائيلنگ ڏيکاري ٿي ته اهو خاص طريقو ڪارڪردگي جي خرابي جو بنيادي سبب آهي. ٻيو، هر ڪال هڪ طريقي سان جيڪو رڪارڊ واپس نٿو ڪري سگهي، ساڳئي صفر-لمبائي صف کي ڪلائنٽ ڏانهن منتقل ڪري سگهي ٿو، ڇاڪاڻ ته ڪنهن به صفر-لمبائي صف ناقابل قابل آهي، ۽ ناقابل قابل شيون شيئر ڪري سگھجن ٿيون. حقيقت ۾، اهو ئي ٿئي ٿو جڏهن توهان هڪ مجموعي مان عناصر کي ڊمپ ڪرڻ لاء معياري محاورو استعمال ڪندا آهيو هڪ قسم جي ڪنٽرول صف ۾:
private List сhееsеsInStосk =,
private fiпаl static Cheese[] NULL_CHEESE_ARRAY = nеw Cheese[0];
 /**
* @геtuгп массие, содержащий все сыры, имеющиеся в магазине
*/
public Cheese[] getCheeses() {
геtuгп (Cheese[] сhееsеsInStосk.tоАггау(NULL_СНЕЕSЕ_АRRАУ);
}
هن محاوري ۾، هڪ مسلسل، هڪ صفر-لمبائي صف جي طور تي،toArray هڪ طريقو ڏانهن گذريو ويو آهي انهي کي ظاهر ڪرڻ لاء ته ڪهڙي قسم کي موٽڻ گهرجي. عام طور تي، طريقو toArrayميموري اسپيس کي مختص ڪري ٿو واپسي واري صف لاءِ، پر جيڪڏهن مجموعو خالي آهي، اهو ان پٽ صف ۾ رکيل آهي، ۽ وضاحت Сollесtion,tоАггау(Оbjесt[])يقيني بڻائي ٿي ته جيڪڏهن انپٽ سري ڪافي وڏي آهي ته مجموعي تي مشتمل هجي، اهو ئي آهي جيڪو واپس ڪيو ويو آهي. تنهن ڪري، پيش ڪيل محاورو ڪڏهن به پاڻ کي ميموري ۾ صفر-لمبائي صف مختص نه ڪندو، پر "قسم-مخصوص مستقل" استعمال ڪندو آهي جيئن. اچو ته اختصار ڪريون. صفر-لمبائي واري صف جي بجاءِ null موٽڻ لاءِ صف جي طريقي جو ڪو سبب ناهي. هي محاورو ظاهر ٿئي ٿو سي پروگرامنگ ٻولي مان اسٽيم، جتي هڪ صف جي ڊيگهه پاڻ کي صف کان الڳ طور تي واپس ڪيو ويندو آهي. سي ۾، صفر-لمبائي صف لاءِ ميموري مختص ڪرڻ بيڪار آهي. ذريعو: جوشوا بلوچ، جاوا TM مؤثر پروگرامنگ، لوري پبلشنگ هائوس
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION