JavaRush /جاوا بلاگ /Random-SD /مختصر طور تي مکيه شيء بابت - جاوا جمع فريم ورڪ
Viacheslav
سطح

مختصر طور تي مکيه شيء بابت - جاوا جمع فريم ورڪ

گروپ ۾ شايع ٿيل

رستي جي شروعات

اڄ مان هڪ اهڙي دلچسپ موضوع بابت ڳالهائڻ چاهيندس جيئن ” جاوا ڪليڪشن فريم ورڪ “ يا، سادي لفظن ۾، مجموعن بابت. گهڻو ڪري ڪوڊ جو ڪم هڪ فارم يا ٻئي ۾ ڊيٽا پروسيسنگ آهي. استعمال ڪندڙن جي لسٽ حاصل ڪريو، پتي جي لسٽ حاصل ڪريو، وغيره. ڪنهن به طرح انهن کي ترتيب ڏيو، هڪ ڳولا انجام ڏيو، انهن جو مقابلو ڪريو. اهو ئي سبب آهي ته گڏ ڪرڻ جي علم کي بنيادي مهارت سمجهيو ويندو آهي. ان ڪري مان ان بابت ڳالهائڻ چاهيان ٿو. ان کان علاوه، جاوا ڊولپر جي انٽرويو ۾ سڀ کان وڌيڪ عام سوالن مان هڪ آهي مجموعو. مثال طور، "مجموعن جو هڪ ترتيب وار ٺاھيو." آن لائن ڪمپيلر اسان جي رستي تي اسان جي مدد ڪندو. مثال طور، توھان استعمال ڪري سگھو ٿا " Tutorialspoint Online Java Compiler " يا Repl.it. ڪنهن به ڊيٽا جي جوڙجڪ کي ڄاڻڻ جو رستو عام متغيرن (متغير) سان شروع ٿئي ٿو. Oracle ويب سائيٽ تي، مختلف عنوانن کي "رستو" يا پيچرن جي طور تي پيش ڪيو ويو آهي. تنهن ڪري، جاوا کي ڄاڻڻ جي رستي کي سڏيو ويندو آهي " پيچ: جاوا ٻولي سکڻ: مواد جو جدول ". ۽ ٻوليءَ جي بنياديات (يعني ٻوليءَ جا بنيادي) ويريئبل سان شروع ٿين ٿا. تنهن ڪري، اچو ته هڪ سادي ڪوڊ لکون:
public static void main(String[] args) {
	String user = "Max";
	System.out.println("Hello, " + user);
}
اهو هر شي ۾ سٺو آهي، سواء ان جي ته اسان سمجھون ٿا ته هي ڪوڊ صرف هڪ متغير لاء سٺو ۽ خوبصورت آهي. ڇا ڪجي جيڪڏهن انهن مان ڪيترائي آهن؟ ھڪڙي قسم جي ڊيٽا کي ذخيرو ڪرڻ لاء آري ايجاد ڪيا ويا. Oracle کان ساڳئي پيچري ۾ ھڪڙو الڳ سيڪشن آھي جيڪو صفن لاء وقف آھي. هن حصي کي سڏيو ويندو آهي: " Arays ". arrays سان ڪم ڪرڻ پڻ بلڪل سادو آهي:
import java.util.Arrays;
class Main {
  public static void main(String[] args) {
    String[] users = new String[2];
    users[0] = "Max";
    users[1] = "John";
    System.out.println("Hello, " + Arrays.toString(users));
  }
}
Arrays هڪ جڳهه تي ڪيترن ئي قدرن کي محفوظ ڪرڻ جو مسئلو حل ڪري ٿو. پر اهو هڪ حد لاڳو ڪري ٿو: صف جي سائيز مسلسل آهي. جيڪڏهن، مثال طور، اسان چيو ته سائيز = 2، پوء اهو ٻه برابر آهي. اهو ئي سڀ ڪجهه آهي. جيڪڏهن اسان هڪ وڏي صف چاهيون ٿا، اسان کي هڪ نئين مثال ٺاهڻ جي ضرورت آهي. انهي سان گڏ، هڪ عنصر ڳولڻ پڻ هڪ صف لاء هڪ مشڪل شيء آهي. ھڪڙو طريقو آھي Arrays.binarySearch، پر ھي ڳولھا صرف ھڪڙي ترتيب ڏنل صف تي ڪم ڪري ٿو (غير ترتيب ڏنل صف لاء، نتيجو اڻ ڄاڻايل يا صرف غير متوقع آھي). اهو آهي، ڳولا اسان کي هر ڀيري ترتيب ڏيڻ جي پابند ڪندو. حذف ڪرڻ پڻ صرف قدر کي صاف ڪري ٿو. تنهن ڪري، اسان اڃا تائين نه ڄاڻون ٿا ته اصل ۾ ڪيترو ڊيٽا صف ۾ آهي، اسان صرف ڄاڻون ٿا ته صف ۾ ڪيترا سيلز آهن. صفن جي باري ۾ توهان جي ڄاڻ کي تازو ڪرڻ لاء: ۽ جاوا ٻوليءَ جي ترقيءَ جي نتيجي ۾، جاوا ڪليڪشن فريم ورڪ JDK 1.2 ۾ ظاهر ٿيو، جنهن بابت اسين اڄ ڳالهائينداسين.
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 2

جمع

شروعات کان ئي قيمت شروع ڪريو. جمع ڇو؟ اصطلاح پاڻ شين مان اچي ٿو "قسم جو نظريو" ۽ "خلاصي ڊيٽا جا قسم". پر جيڪڏهن توهان ڪنهن به اعليٰ معاملن کي نه ٿا ڏسو، ته پوءِ جڏهن اسان وٽ ڪيتريون ئي شيون آهن، ته اسان انهن کي ”شيون جو مجموعو“ چئي سگهون ٿا. جيڪي شيون گڏ ڪن ٿا. عام طور تي، لفظ جمع پاڻ لات مان ايندو آهي. گڏ ڪرڻ، گڏ ڪرڻ. اھو آھي، ھڪڙو مجموعو ھڪڙي شيء جو مجموعو آھي، ھڪڙو ڪنٽينر ڪجھ عناصر لاء. تنهنڪري اسان وٽ عناصر جو هڪ مجموعو آهي. اسان ان سان ڇا ڪرڻ چاهيون ٿا:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 3
جئين توهان ڏسي سگهو ٿا، اسان شايد ڪافي منطقي شيون چاهيون ٿا. اسان اهو پڻ سمجهون ٿا ته اسان شايد ڪجهه ڪرڻ چاهيون ٿا ڪيترن ئي مجموعن سان:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 4
ان مطابق، جاوا ڊولپرز لکيو java.util.Collection انٽرفيس سڀني مجموعن لاءِ ھن عام رويي کي بيان ڪرڻ لاءِ . گڏ ڪرڻ وارو انٽرفيس اهو آهي جتي سڀ مجموعا نڪرندا آهن. مجموعو هڪ خيال آهي، اهو هڪ خيال آهي ته سڀني مجموعن کي ڪيئن عمل ڪرڻ گهرجي. تنهن ڪري، اصطلاح "مجموعي" هڪ انٽرفيس طور ظاهر ڪيو ويو آهي. قدرتي طور تي، هڪ انٽرفيس کي لاڳو ڪرڻ جي ضرورت آهي. انٽرفيس java.util.Collection۾ ھڪڙو خلاصو طبقو آھي AbstractCollection، اھو آھي، ڪجھ "خلاصو مجموعو"، جيڪو ٻين عملن لاءِ ڍانچي جي نمائندگي ڪري ٿو (جيئن جاوا ڊڪ ۾ لکيل آھي ڪلاس جي مٿان java.util.AbstractCollection). مجموعن جي باري ۾ ڳالهائيندي، اچو ته واپس وڃو ۽ ياد رکون ٿا ته اسان انهن کي ٻيهر ڏيڻ چاهيون ٿا. هن جو مطلب اهو آهي ته اسان عناصر جي ذريعي هڪ هڪ ڪري ٻيهر ورجائڻ چاهيون ٿا. هي هڪ تمام اهم تصور آهي. تنهن ڪري، انٽرفيس Collectionکان ورثي ۾ ملي ٿو Iterable. اهو تمام ضروري آهي ڇاڪاڻ ته ... سڀ کان پهريان، هر شيءِ Iterable ان جي مواد جي بنياد تي هڪ Iterator کي واپس ڪرڻ جي قابل هوندو. ۽ ٻيو، هر شيء جيڪا Iterable استعمال ڪري سگهجي ٿي لوپس ۾ for-each-loop. ۽ اهو هڪ ائٽريٽر جي مدد سان آهي AbstractCollectionته طريقن جهڙوڪ contains, toArray, تي عمل ڪيو ويندو آهي remove. ۽ گڏ ڪرڻ کي سمجھڻ جو رستو ھڪڙي عام ڊيٽا جي جوڙجڪ سان شروع ٿئي ٿو - ھڪڙي فهرست، يعني. List.
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 5

لسٽون

تنهن ڪري، فهرستن جي مجموعن جي ترتيب ۾ هڪ اهم جڳهه تي قبضو آهي:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 6
جيئن اسان ڏسي سگهون ٿا، فهرستون java.util.List انٽرفيس کي لاڳو ڪن ٿيون . لسٽون ظاهر ڪن ٿيون ته اسان وٽ عناصر جو هڪ مجموعو آهي، جيڪي ڪجهه ترتيب سان ترتيب ڏنل آهن هڪ ٻئي پٺيان. هر عنصر هڪ انڊيڪس آهي (جهڙوڪ هڪ صف ۾). عام طور تي، هڪ فهرست توهان کي اجازت ڏئي ٿي ته ساڳي قدر سان عناصر آهن. جيئن اسان مٿي چيو آهي، Listاهو عنصر جي انڊيڪس بابت ڄاڻي ٿو. اهو توهان کي حاصل ڪرڻ جي اجازت ڏئي ٿو ( get) هڪ عنصر انڊيڪس ذريعي يا هڪ مخصوص انڊيڪس لاء قيمت مقرر ڪريو ( set). گڏ ڪرڻ جا طريقا add، addAll, removeتوهان کي انڊيڪس جي وضاحت ڪرڻ جي اجازت ڏين ٿا جتان انهن تي عمل ڪرڻ. اضافي طور تي، y Listوٽ ھڪڙو ورجن جو ھڪڙو ورجن آھي جنھن کي سڏيو ويندو آھي ListIterator. هي آئٽرٽر عنصر جي انڊيڪس بابت ڄاڻي ٿو، تنهنڪري اهو نه رڳو اڳتي وڌائي سگھي ٿو، پر پوئتي پڻ. اهو پڻ گڏ ڪري سگهجي ٿو هڪ مخصوص جڳهه کان مجموعي ۾. سڀني عملن ۾، ٻه عام طور تي استعمال ٿيل آهن: ArrayList۽ LinkedList. پهرين، ArrayListاها هڪ فهرست آهي ( List) هڪ صف جي بنياد تي ( Array). هي توهان کي حاصل ڪرڻ جي اجازت ڏئي ٿو "بي ترتيب رسائي" عناصر تائين . رينڊم رسائي هڪ عنصر کي فوري طور تي انڊيڪس ذريعي حاصل ڪرڻ جي صلاحيت آهي، بلڪه سڀني عنصرن جي ذريعي ٻيهر ورجائڻ جي جيستائين اسان کي گهربل انڊيڪس سان عنصر نه ملي. اهو هڪ بنياد آهي جيڪو هن کي حاصل ڪرڻ جي اجازت ڏئي ٿو. ان جي برعڪس، LinkedListاها هڪ ڳنڍيل فهرست آهي. جڙيل لسٽ ۾ هر داخلا فارم ۾ ظاھر ڪئي وئي آھي Entry، جيڪو ڊيٽا پاڻ کي ذخيرو ڪري ٿو، ۽ گڏوگڏ ايندڙ (اڳيون) ۽ پوئين (اڳوڻي) جي ھڪڙي لنڪ Entry. اهڙيءَ طرح LinkedList"Sequential Access " کي لاڳو ڪري ٿو . واضح رهي ته پنجين عنصر کي ڳولڻ لاءِ اسان کي پهرين عنصر کان آخري تائين وڃڻو پوندو، ڇاڪاڻ ته اسان کي پنجين عنصر تائين سڌي رسائي نه آهي. اسان ان کي صرف 4th عنصر مان رسائي ڪري سگھون ٿا. انهن جي تصور ۾ فرق هيٺ ڏنل آهي:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 7
ڪم ۾، جيئن توهان سمجھندا آهيو، اتي پڻ فرق آهي. مثال طور، عناصر شامل ڪرڻ. عناصر LinkedListصرف هڪ زنجير ۾ لنڪ وانگر ڳنڍيل آهن. پر ArrayListاهو هڪ صف ۾ عناصر کي ذخيرو ڪري ٿو. ۽ هڪ صف، جيئن اسان ڄاڻون ٿا، ان جي سائيز کي تبديل نٿو ڪري سگهي. پوء ڪيئن ڪم ڪندو ArrayList؟ ۽ اهو بلڪل سادو ڪم ڪري ٿو. جڏهن صف ۾ خلا ختم ٿئي ٿو، اهو 1.5 ڀيرا وڌائي ٿو. هتي زوم ڪوڊ آهي: int newCapacity = oldCapacity + (oldCapacity >> 1); آپريشن ۾ هڪ ٻيو فرق عناصر جي ڪنهن به آفسٽ آهي. مثال طور، جڏهن وچ ۾ عناصر شامل ڪرڻ يا ختم ڪرڻ. LinkedListهڪ عنصر مان هٽائڻ لاء ، صرف هن عنصر جي حوالي سان هٽايو. جي صورت ۾، ArrayListاسان کي هر ڀيري استعمال ڪندي عناصر کي تبديل ڪرڻ تي مجبور ڪيو وڃي ٿو System.arraycopy. اهڙيء طرح، وڌيڪ عناصر، وڌيڪ عملن کي انجام ڏيڻو پوندو. وڌيڪ تفصيلي وضاحت هنن مضمونن ۾ ملي سگهي ٿي: ArrayList کي جانچڻ بعد، ڪو به مدد نٿو ڪري سگھي پر ان جي "اڳوڻي" کي ياد ڪري، java.util.Vector ڪلاس . اهو مختلف Vectorآهي ArrayListته گڏ ڪرڻ سان ڪم ڪرڻ جا طريقا (شامل ڪرڻ، حذف ڪرڻ، وغيره) هم وقت سازي ٿيل آهن. اهو آهي، جيڪڏهن هڪ ٿريڊ ( Thread) عناصر شامل ڪري ٿو، ته پوءِ ٻيا ٿريڊ انتظار ڪندا جيستائين پهرين ٿريڊ پنهنجو ڪم مڪمل نه ڪري. جيئن ته ٿريڊ جي حفاظت جي اڪثر ضرورت نه هوندي آهي، اهڙين حالتن ۾ ڪلاس استعمال ڪرڻ جي سفارش ڪئي وئي آهي ArrayList، جيئن واضح طور تي JavaDoc ۾ ڪلاس لاءِ چيو ويو آهي Vector. ان کان سواء، Vectorان جي سائيز وڌائي ٿو 1.5 ڀيرا نه، ArrayListپر 2 ڀيرا. ٻي صورت ۾، رويو ساڳيو آهي - Vectorعناصر جي اسٽوريج هڪ صف جي صورت ۾ لڪيل آهي ۽ عناصر کي شامل ڪرڻ/هٽائڻ جا ساڳيا نتيجا آهن جيئن ArrayList. حقيقت ۾، Vectorاسان هن کي هڪ سبب لاء ياد ڪيو. جيڪڏهن اسان Javadoc ۾ ڏسون ٿا، اسان ڏسنداسين "سڌي سڃاتل ذيلي طبقن" ۾ هڪ ساخت جهڙوڪ java.util.Stack . اسٽيڪ هڪ دلچسپ جوڙجڪ آهي جيڪا هڪ LIFO آهي last-in-first-out(آخري اندر، پهرين ٻاهر) ساخت. انگريزيءَ مان ترجمو ڪيل اسٽيڪ هڪ اسٽيڪ آهي (جهڙوڪ ڪتابن جو اسٽيڪ، مثال طور). اسٽيڪ اضافي طريقن کي لاڳو ڪري ٿو: peek(ڏس، ڏس)، pop(پش)، push(پش). طريقي peekسان ترجمو ڪيو ويو آهي ڏس (مثال طور، بيگ جي اندر جھڪائڻ کي ترجمو ڪيو ويو آهي " بيگ جي اندر ڏسو "، ۽ ڪيهول ذريعي جھڪايو ويو آهي " پيڪ ذريعي ڪي هول "). اهو طريقو توهان کي اسٽيڪ جي "مٿي" کي ڏسڻ جي اجازت ڏئي ٿو، يعني. حاصل ڪريو آخري عنصر بغير ختم ڪرڻ (يعني بغير ختم ڪرڻ) ان کي اسٽيڪ مان. طريقو pushهڪ نئين عنصر کي دٻائي ٿو (شامل ڪري ٿو) اسٽيڪ تي ۽ ان کي واپس ڪري ٿو، ۽ عنصر جو طريقو popهٽائي ٿو (هٽائي ٿو) ۽ واپس ڪري ٿو هٽايو ويو. سڀني ٽنهي صورتن ۾ (يعني پڪ، پاپ ۽ ڌڪ)، اسان صرف آخري عنصر سان ڪم ڪندا آهيون (يعني "اسٽيڪ جي چوٽي"). هي اسٽيڪ جي جوڙجڪ جي بنيادي خصوصيت آهي. رستي ۾، اسٽيڪ کي سمجھڻ لاءِ هڪ دلچسپ ڪم آهي، جنهن جو ذڪر ڪتاب ”اي پروگرامر ڪيريئر“ (ڪريڪنگ ڪوڊنگ انٽرويو) ۾ ڪيو ويو آهي. هتي هڪ دلچسپ ڪم آهي جتي ”اسٽيڪ“ ڍانچي (LIFO) کي استعمال ڪندي توهان کي ”قطار“ لاڳو ڪرڻ جي ضرورت آهي. ساخت (FIFO). اهو هن طرح ڏسڻ گهرجي:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 8
ھن ڪم جو تجزيو ھتي ڳولي سگھجي ٿو: " لاڳو ڪريو ھڪڙي قطار استعمال ڪندي Stacks - The Queue ADT ("LetCode تي Stacks استعمال ڪندي قطار لاڳو ڪريو) ". تنهنڪري اسان آساني سان هڪ نئين ڊيٽا جي جوڙجڪ ڏانهن وڃو - هڪ قطار.
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 9

قطار

هڪ قطار هڪ ساخت آهي جيڪو اسان کي زندگي کان واقف آهي. دڪانن تي قطارون، ڊاڪٽرن وٽ. جيڪو به پھريون آيو (First In) اھو پھريون ھوندو جيڪو قطار مان نڪرندو (First Out). جاوا ۾، هڪ قطار جي نمائندگي ڪئي وئي آهي java.util.Queue انٽرفيس . قطار جي Javadoc جي مطابق، قطار ھيٺ ڏنل طريقا شامل ڪري ٿو:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 10
جئين توهان ڏسي سگهو ٿا، آرڊر جا طريقا آهن (انهن تي عمل ڪرڻ ۾ ناڪامي هڪ استثنا سان ڀريل آهي) ۽ درخواست جا طريقا آهن (انهن تي عمل ڪرڻ جي ناڪامي غلطين جي ڪري نه ٿي). اهو پڻ ممڪن آهي ته عنصر حاصل ڪرڻ کان سواء ان کي هٽائڻ (چوڪ يا عنصر). قطار انٽرفيس ۾ پڻ ھڪڙو مفيد جانشين آھي - Deque . اهو جنهن کي "ٻه طرفي قطار" سڏيو ويندو آهي. اهو آهي، اهڙي قطار توهان کي هن ڍانچي کي ٻنهي جي شروعات ۽ آخر کان استعمال ڪرڻ جي اجازت ڏئي ٿي. دستاويزن ۾ چيو ويو آهي ته "ڊيڪس کي LIFO (آخري-ان-فرسٽ-آئوٽ) اسٽيڪ طور پڻ استعمال ڪري سگهجي ٿو. هي انٽرفيس استعمال ٿيڻ گهرجي ترجيحن ۾ ورثي واري اسٽيڪ ڪلاس جي لاءِ. اسٽيڪ. Javadoc ڏيکاري ٿو ته ڪهڙا طريقا Deque انٽرفيس بيان ڪري ٿو:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 11
اچو ته ڏسو ته اتي ڪهڙا عمل آهن. ۽ اسان هڪ دلچسپ حقيقت ڏسنداسين - LinkedList قطار ڪيمپ ۾ اچي چڪو آهي) اهو آهي، LinkedList ٻنهي کي لاڳو ڪري ٿو List، ۽ Deque. پر هتي پڻ آهن "صرف قطار"، مثال طور PriorityQueue. هوء اڪثر ياد نه آهي، پر بيڪار ۾. پهرين، توهان هن قطار ۾ "غير موازنہ شيون" استعمال نٿا ڪري سگهو، يعني. يا ته Comparator کي بيان ڪيو وڃي يا سڀ شيون comparable هجڻ گهرجن. ٻيو، "هي عمل درآمد مهيا ڪري ٿو O(log(n)) وقت enqueuing ۽ dequeuing طريقن لاء". Logarithmic پيچيدگي اتي هڪ سبب لاء آهي. لاڳو ڪيل ترجيحي قطار جي بنياد تي. Javadoc چوي ٿو: "ترجيح واري قطار هڪ متوازن بائنري هيپ جي طور تي نمائندگي ڪئي وئي آهي". هن لاء اسٽوريج پاڻ هڪ باقاعده صف آهي. جيڪا ضرورت پوڻ تي وڌي ٿي. جڏهن ڍير ننڍڙو آهي، اهو 2 ڀيرا وڌائي ٿو. ۽ پوءِ 50 سيڪڙو تائين. ڪوڊ مان تبصرو: "ڊبل سائيز جيڪڏهن ننڍو؛ ٻيو وڌو 50٪". ترجيحي قطار ۽ بائنري هيپ هڪ الڳ موضوع آهن. پوء وڌيڪ معلومات لاء: ھڪڙو عمل java.util.Dequeٿي سگھي ٿو java.util.ArrayDeque ڪلاس . اهو آهي، فهرستن کي لاڳو ڪري سگهجي ٿو ڳنڍيل فهرست ۽ هڪ صف استعمال ڪندي، ۽ قطار پڻ لاڳو ڪري سگھجن ٿيون هڪ صف استعمال ڪندي يا ڳنڍيل فهرست استعمال ڪندي. Queue۽ انٽرفيس Deque۾ اولاد آهن "بلاڪنگ قطار" جي نمائندگي ڪن ٿا: BlockingQueue۽ BlockingDeque. هتي باقاعده قطار جي مقابلي ۾ انٽرفيس تبديلي آهي:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 12
اچو ته قطار کي بلاڪ ڪرڻ جا ڪجهه مثال ڏسو. پر اهي دلچسپ آهن. مثال طور، BlockingQueue پاران لاڳو ڪيو ويو آهي: PriorityBlockingQueue ، SynchronousQueue ، ArrayBlockingQueue، DelayQueue ، LinkedBlockingQueue . پر BlockingDequeاهي معياري ڪليڪشن فريم ورڪ مان هر شي تي عمل ڪن ٿا LinkedBlockingDeque. هر قطار هڪ الڳ جائزو جو موضوع آهي. ۽ هن جائزي جي فريم ورڪ جي اندر، اسين طبقاتي ورهاڱي کي نه رڳو سان List، پر ان سان پڻ بيان ڪنداسين Queue:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 13
جيئن اسان ڊاگرام مان ڏسي سگھون ٿا، جاوا ڪليڪشن فريم ورڪ جا انٽرفيس ۽ ڪلاس تمام گھڻو جڙيل آھن. اچو ته hierarchy جي هڪ ٻي شاخ شامل ڪريون - Set.
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 14

مقرر

Set- ترجمو ڪيو ويو "سيٽ." اهو هڪ قطار کان مختلف آهي ۽ Setعناصر جي اسٽوريج تي ان جي وڏي تجزيي ۾ هڪ فهرست. Set- شين جي هڪ ٿلهي وانگر، جتي اهو معلوم ناهي ته شيون ڪيئن واقع آهن ۽ ڪهڙي ترتيب ۾ رکيل آهن. جاوا ۾، اهڙي سيٽ جي نمائندگي ڪئي ويندي آهي java.util.Set انٽرفيس . جيئن دستاويز چوي ٿو، Setهي هڪ "مجموعو آهي جنهن ۾ ڪوبه نقل عنصر شامل ناهي". دلچسپ ڳالهه اها آهي ته انٽرفيس پاڻ Setانٽرفيس ۾ نوان طريقا شامل نٿو ڪري Collection، پر رڳو ضرورتن کي واضح ڪري ٿو (جنهن بابت نقل نه هجڻ گهرجي). ان کان علاوه، پوئين بيان مان اهو آهي ته توهان صرف Setان مان هڪ عنصر حاصل نٿا ڪري سگهو. Iterator عناصر حاصل ڪرڻ لاء استعمال ڪيو ويندو آهي. Setان سان لاڳاپيل ڪيترائي وڌيڪ انٽرفيس آهن. پهريون آهي SortedSet. جيئن ته نالو مشورو ڏئي ٿو، SortedSetاهو ظاهر ڪري ٿو ته اهڙي سيٽ ترتيب ڏنل آهي، ۽ تنهن ڪري عناصر انٽرفيس کي لاڳو ڪن ٿا Comparableيا بيان ڪيل آهن Comparator. ان کان سواء، SortedSetاهو پيش ڪري ٿو ڪيترائي دلچسپ طريقا:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 15
ان کان علاوه، طريقا آهن first(قيمت جي لحاظ کان ننڍو عنصر) ۽ last(قدر جي لحاظ کان سڀ کان وڏو عنصر). SortedSetهڪ وارث آهي - NavigableSet. هن انٽرفيس جو مقصد بيان ڪرڻ آهي نيويگيشن طريقن کي وڌيڪ صحيح طور تي مناسب عناصر جي سڃاڻپ ڪرڻ جي ضرورت آهي. هڪ دلچسپ ڳالهه اها آهي NavigableSetته اهو عام آئٽرٽر ۾ اضافو ڪري ٿو (جيڪو ننڍي کان وڏي تائين وڃي ٿو) ريورس آرڊر لاءِ هڪ آئٽرٽر - descendingIterator. اضافي طور تي، اهو توهان کي پنهنجو پاڻ کي ڏسڻ (ڏسو) حاصل ڪرڻ لاء NavigableSetطريقو استعمال ڪرڻ جي اجازت ڏئي ٿو ، جنهن ۾ عناصر ريورس ترتيب ۾ آهن. descendingSetاهو سڏيو ويندو آهي Viewڇاڪاڻ ته نتيجو عنصر ذريعي توهان اصل عنصر جي عناصر کي تبديل ڪري سگهو ٿا Set. اهو آهي، جوهر ۾، اهو هڪ مختلف انداز ۾ اصل ڊيٽا جي نمائندگي آهي، ۽ ان جي ڪاپي ناهي. دلچسپ ڳالهه اها آهي NavigableSetته، جهڙوڪ Queue، سنڀالي سگهي ٿو pollFirst(گهٽ ۾ گهٽ) ۽ pollLast(وڌ کان وڌ) عناصر. اھو آھي، اھو اھو عنصر حاصل ڪري ٿو ۽ ان کي سيٽ مان ڪڍي ٿو. اتي ڪهڙي قسم جا عمل آهن؟ پهرين، سڀ کان وڌيڪ مشهور عمل تي ٻڌل آهي هيش ڪوڊ - HashSet . ٻيو هڪجهڙائي وارو مشهور عمل ڳاڙهي-ڪاري وڻ تي ٻڌل آهي - TreeSet . اچو ته اسان جو ڊراگرام مڪمل ڪريون:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 16
مجموعن جي اندر، ان کي ترتيب ڏيڻ لاء باقي رهي ٿو درجه بندي - hermits. جيڪو پهرين نظر ۾ هڪ طرف بيٺو آهي - java.util.Map.
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 17

نقشا

نقشا هڪ ڊيٽا جو ڍانچو آهي جنهن ۾ ڊيٽا کي ڪيئي ذريعي محفوظ ڪيو ويندو آهي. مثال طور، اهم ٿي سگهي ٿو هڪ ID يا شهر جو ڪوڊ. ۽ اھو آھي ھن چاٻي جي ذريعي ڊيٽا کي ڳولھيو ويندو. اهو دلچسپ آهي ته ڪارڊ الڳ الڳ ڏيکاريل آهن. ڊولپرز جي مطابق (ڏسو " جاوا ڪليڪشن API ڊيزائن FAQ ")، ڪي-ويل ميپنگ ڪو مجموعو ناهي. ۽ نقشا وڌيڪ تيزيءَ سان سمجھي سگھجن ٿا ڪنن جو مجموعو، قدرن جو مجموعو، ڪيئي قدر جوڙن جو مجموعو. هي هڪ اهڙي دلچسپ جانور آهي. ڪهڙا طريقا ڪارڊ مهيا ڪندا آهن؟ اچو ته ڏسو Java API انٽرفيس java.util.Map . ڇاڪاڻ ته جيئن ته نقشا مجموعا نه آهن (اهي مجموعن مان ورثي ۾ نه ٿا اچن)، انهن ۾ شامل نه آهي contains. ۽ اهو منطقي آهي. هڪ نقشو ڪنجين ۽ قدرن تي مشتمل آهي. انهن مان ڪهڙو طريقو چيڪ ڪرڻ گهرجي contains۽ ڪيئن نه پريشان ٿيڻ گهرجي؟ تنهن ڪري، انٽرفيس Mapجا ٻه مختلف نسخا آهن: containsKey(هڪ ڪنجي تي مشتمل آهي) ۽ containsValue(هڪ قدر تي مشتمل آهي). ان کي استعمال ڪندي keySetتوهان کي چابين جو هڪ سيٽ حاصل ڪرڻ جي اجازت ڏئي ٿي (ساڳي هڪ Set). ۽ طريقو استعمال ڪندي valuesاسان نقشي ۾ قدرن جو مجموعو حاصل ڪري سگھون ٿا. نقشي ۾ ڪنجيون منفرد آھن، جن تي ڊيٽا جي جوڙجڪ تي زور ڏنو ويو آھي Set. قدر کي بار بار ڪري سگهجي ٿو، جنهن تي زور ڏنو ويو آهي گڏ ڪيل ڊيٽا جي جوڙجڪ. ان کان علاوه، طريقي سان استعمال ڪندي entrySetاسان حاصل ڪري سگھون ٿا ڪيئي-قدر جوڑوں جو هڪ سيٽ. توھان وڌيڪ پڙھي سگھوٿا وڌيڪ تفصيلي تجزين ۾ ڪھڙا ڪارڊ لاڳو ڪرڻ وارا آھن: مان پڻ ڏسڻ چاهيان ٿو ته ڇا HashMapسان تمام گهڻو ملندڙ جلندڙ آهي HashSet، ۽ TreeMapڏانهن TreeSet. انهن وٽ هڪجهڙا انٽرفيس به آهن: NavigableSet۽ NavigableMap، SortedSet۽ SortedMap. تنهنڪري اسان جو آخري نقشو هن طرح نظر ايندو:
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 18
اسان ان دلچسپ حقيقت سان ختم ڪري سگھون ٿا ته مجموعو Setاندروني طور استعمال ڪري ٿو Map، جتي شامل ڪيل قيمتون چابيون آهن، ۽ قيمت هر جڳهه ساڳي آهي. اهو دلچسپ آهي ڇاڪاڻ ته اهو Mapهڪ مجموعو ۽ واپسي نه آهي Set، جيڪو هڪ مجموعو آهي پر حقيقت ۾ لاڳو ڪيو ويو آهي جيئن Map. ٿورڙو حقيقي، پر اهو ڪيئن نڪتو)
مختصر طور تي مکيه شيء بابت - جاوا ڪليڪشن فريم ورڪ - 19

نتيجو

سٺي خبر اها آهي ته هي جائزو هتي ختم ٿئي ٿو. خراب خبر اها آهي ته هي هڪ تمام جائزو مضمون آهي. هر هڪ مجموعن جو هر عمل هڪ الڳ مضمون جو مستحق آهي، ۽ پڻ اسان جي اکين کان لڪيل هر الگورتھم لاء. پر هن جائزي جو مقصد اهو ياد رکڻ آهي ته اهي ڇا آهن ۽ انهن جي وچ ۾ ڪنيڪشن ڇا آهن. اميد اٿم ته غور سان پڙهڻ کان پوءِ توهان يادگيري مان مجموعن جو هڪ خاڪو ٺاهي سگهندا. خير، معمول وانگر، ڪجهه لنڪس: #وياچسلاو
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION