CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ ڪليڪشن ڪلاس
John Squirrels
سطح
San Francisco

جاوا ۾ ڪليڪشن ڪلاس

گروپ ۾ شايع ٿيل
سلام گذريل ڪجھ سبقن ۾، اسان پنھنجي مهارت ۾ وڏي ترقي ڪئي آھي ArrayList. تنهن هوندي، هن وقت تائين اسان صرف آسان آپريشن ڪيا آهن: هٽايو، داخل ڪريو، ۽ ڊسپلي. يقينن، هي ڪمن جي مڪمل فهرست کي ڍڪي نه ٿو ڏئي جيڪي ڊولپرز کي انجام ڏيڻ گهرجن جڏهن ڪم ڪرڻ سان ArrayList. arrays ۽ ڪلاس بابت سبق ياد رکو Arrays؟ جاوا جي تخليقڪارن خاص طور تي هن طبقي کي ڊزائين ڪيو آهي ته اهي سڀ کان وڌيڪ عام ڪمن کي سنڀالڻ لاء پروگرامرن کي منهن ڏيڻو پوندو جڏهن صفن سان ڪم ڪندي. ۽ ڇا جي باري ۾ ArrayList؟ يقينا، اتي عام ڪمن جي ڪجهه فهرست آهي جنهن کي ان سان انجام ڏيڻ جي ضرورت آهي. ڇا اهي سڀئي هڪ مخصوص طبقي ۾ لاڳو ڪيا ويا آهن، يا ڇا اسان کي هر دفعي اسان جي پنهنجي عمل کي لکڻو پوندو؟ يقينا، توهان کي هر شي پاڻ کي لکڻ جي ضرورت ناهي. سڀ کان وڌيڪ عام آپريشن جن ۾ مجموعا شامل آهن خاص جامد Collectionsطبقي ۾ اڳ ۾ ئي لاڳو ڪيا ويا آهن. مجموعا ڪلاس - 1 جاوا ۾، ڊيٽا جي جوڙجڪ جو هڪ گروپ عام طور تي هڪ مجموعو طور حوالو ڏنو ويو آهي . ڊيٽا ڪيترن ئي مختلف طريقن سان محفوظ ڪري سگهجي ٿو. هينئر تائين، اسان صرف ArrayListڪلاس جو اڀياس ڪيو آهي، جتي ڊيٽا هڪ صف ۾ محفوظ ٿيل آهي. اسان بعد ۾ ٻين مجموعن سان واقف ڪنداسين. هن وقت، اهو سمجهڻ ڪافي آهي ته Collectionsڪلاس نه رڳو ڪم ڪرڻ لاء ٺهيل آهي ArrayList، پر ٻين قسمن جي مجموعن سان پڻ (تنهنڪري، ان جو نالو). تنهن ڪري، ڪهڙن ڪمن Collectionsسان ڪلاس اصل ۾ مدد ڪندو آهي جڏهن ڪم ڪرڻ سان ArrayList؟ پهريون ۽ سڀ کان وڌيڪ واضح آهي ترتيب ڏيڻ. صفن جي باري ۾ سبق ۾، اسان انگن سان گڏ هڪ مثال سمجهيو. هاڻي اسان تارن سان گڏ هڪ مثال تي غور ڪنداسين. ڪلاس مجموعن جي مواد کي ترتيب ڏيڻ جو طريقو Collectionsلاڳو ڪري ٿو :sort()
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune));
       Collections.sort(solarSystem);
       System.out.println(solarSystem);

   }
}
ٻاھر نڪتو: [ڌرتيءَ، مشتري، مريخ، عطارد، نيپچون، زحل، يورينس، وينس] تارن کي الفابيٽ جي ترتيب سان ترتيب ڏنو ويو آھي! پر الفابيٽ جي لحاظ کان ڇو؟ ڪلاس Stringاصل ۾ منطق کي لاڳو ڪري ٿو جيڪو سنڀاليندو آهي ته تارن جو مقابلو ڪيئن ڪيو وڃي ٿو (جيڪو الفابيٽ سان ٿئي ٿو). ڪلاسن لاءِ جيڪي توھان پاڻ ٺاھيو ٿا، توھان پنھنجي مقابلي واري منطق کي لاڳو ڪري سگھو ٿا، پر اسين ھن بابت ٻين سبقن ۾ ڳالهائينداسين. ڪلاس Collectionsپڻ توهان جي مدد ڪري ٿو گهٽ ۾ گهٽ ۽ وڌ ۾ وڌ عنصر ڳولڻ ۾ ArrayList. اهو طريقو min()۽ max()طريقن سان ڪيو ويندو آهي:
public static void main(java.lang.String[] args) {

   ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1,2,3,4,5,6,7));
   System.out.println(Collections.max(numbers));
   System.out.println(Collections.min(numbers));

}
Output: 7 1 قدرتي طور تي، اهو دستي طور تي ڪوڊ لکڻ کان وڌيڪ آسان آهي سڀني عناصرن کي ٻيهر ڏيڻ ۽ سڀ کان وڏو/ننڍو عنصر ڳولڻ لاءِ :) ٻيو تمام مفيد طريقو آهي reverse(). جيڪڏهن اسان کي لسٽ کي "ڦٽ" ڪرڻو پوندو ته عناصر مخالف ترتيب ۾ ويا، اسان اهو ڪيئن ڪنداسين؟ اهو شايد ايترو آسان نه هوندو ته پنهنجي طرفان اهڙي الگورتھم لکڻ لاءِ :) خوشقسمتيءَ سان، طريقو reverse()اڳ ۾ ئي ڄاڻي ٿو ته ڪيئن. فرض ڪريو اسان کي اها حقيقت پسند نه آهي ته اهو sort()طريقو اسان جي سيٽن کي الفابيٽ جي ترتيب سان ترتيب ڏئي ٿو، ۽ اسان انهن جي ترتيب کي واپس ڪرڻ چاهيون ٿا: Z کان A تائين:
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune));
       Collections.sort(solarSystem);
       Collections.reverse(solarSystem);
       System.out.println(solarSystem);

   }
}
ٻاھر نڪتو: [Venus, Uranus, Saturn, Neptune, Mercury, Mars, Jupiter, Earth] اسان ڪافي ڳالھيون ڪندا رھيا آھيون ترتيب ڏيڻ جي باري ۾، عناصر جي ترتيب وغيره. پر جيڪڏھن اسان جو مقصد مخالف ھجي ها ته ڇا ڪجي؟ مثال طور، فرض ڪريو اسان هڪ بنگو راند کي لاڳو ڪرڻ جي ڪوشش ڪري رهيا آهيون. اسان ڊرم ۾ 100 نمبر شامل ڪندا آهيون. انهن کي هڪ وقت ۾ اسڪرين تي ظاهر ٿيڻ گهرجي. پهرين رانديگر پنهنجي ٽڪيٽ تي سڀني نمبرن کي پار ڪرڻ لاءِ کٽيو. اهو طريقو استعمال ڪندي لاڳو ڪرڻ آسان آهي shuffle():
public class Main {

   public static void main(java.lang.String[] args) {

       ArrayList<Integer> bingoDrum = new ArrayList<>(100);
       for (int i = 1; i <= 100; i++) {

           bingoDrum.add(i);// add the numbers 1 to 100 to the drum
       }

       Collections.shuffle(bingoDrum);// Mix it up
       System.out.println ("Your attention, please! Here are the first 10 numbers from the drum!");
       for (int i = 0; i < 10; i++) {

           System.out.println(bingoDrum.get(i));
       }

   }
}
ٻاھر: توھان جو ڌيان، مھرباني ڪري! هتي ڊرم کان پهريان 10 نمبر آهن! 32 61 4 81 25 8 66 35 42 71 اهو آسان آهي! مسئلو حل ٿي ويو آهي، ۽ راند جو اسان جو حصو لکيو ويو آهي :) هاڻي اچو ته هڪ مختلف صورتحال تصور ڪريو. اڳي، اسان ھڪڙي solarSystemفهرست ٺاھيو آھي جنھن ۾ سيارو شامل ھو. ۽ اهو اسان کي هر طريقي سان مناسب لڳي ٿو پر هڪ: توهان ان مان شيون حذف ڪري سگهو ٿا ۽ نوان شامل ڪري سگهو ٿا ! اهو واضح طور تي اهو رويو ناهي جنهن جي اسان توقع ڪندا آهيون: شمسي نظام کي اسان جي پروگرام ۾ تبديل نه ٿيڻ گهرجي. ڪلاس Collections۾ هڪ تمام دلچسپ طريقو آهي: unmodifiableList(). اهو دليل جي طور تي منظور ڪيل فهرست مان هڪ ناقابل قابل فهرست ٺاهي ٿو. توھان ھن لسٽ مان شيون شامل يا ختم نٿا ڪري سگھو. جڏهن شمسي نظام ۾ سيٽن جي فهرست سان معاملو ڪيو وڃي، اهو ئي آهي جيڪو اسان چاهيون ٿا!
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       List<String> solarSystem = Collections.unmodifiableList(new ArrayList<>(Arrays.asList(mercury, venus, earth, mars,
               jupiter, saturn, uranus, neptune)));
       solarSystem.add("Pluto");// Try to add a new element
   }
}
آئوٽ: ٿريڊ ۾ استثنا "main" java.lang.UnsupportedOperationException at java.util.Collections$UnmodifiableCollection.add(Collections.java:1075) at Main.main(Main.java:21) هي هڪ غلطي آهي: توهان نٿا ڪري سگهو ڪجھ به شامل ڪريو solarSystem! صرف هڪ شيءِ توهان کي هتي ڌيان ڏيڻ جي ضرورت آهي حقيقت اها آهي ته هي طريقو واپس اچي ٿو List<>(نه ArrayList<>)، ڇاڪاڻ ته هي قسم سڀني قسمن جي فهرستن لاءِ عام آهي. ٻي ڪافي عام صورتحال جيڪا آساني سان ٿي سگهي ٿي پروگرامر لاءِ غلط ترتيب ۾ عناصر شامل ڪرڻ لاءِ. جيڪڏهن ائين ٿئي ٿو ۽ اسان کي معلوم ٿئي ٿو ته عطارد ۽ نيپچون ملايا ويا آهن، اسان هن طريقي سان هن غلطي کي درست ڪري سگهون ٿا swap():
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystem = new ArrayList<>(Arrays.asList(neptune, venus, earth, mars
       , jupiter, saturn, uranus, mercury));// The planets are in the wrong order
       System.out.println(solarSystem);

       Collections.swap(solarSystem, solarSystem.indexOf(mercury), solarSystem.indexOf(neptune));
       System.out.println(solarSystem);

   }
}
اسان swap()طريقي سان پاس ڪريون ٿا اسان جي لسٽ ۽ انڊيڪس جي ٻن عنصرن کي جن کي تبديل ڪرڻ جي ضرورت آهي. نوٽ ڪريو ته طريقو اشارن سان ڪم ڪري ٿو، حوالن سان نه. تنهن ڪري، هتي اسان کي طريقو استعمال ڪرڻو پوندو ArrayList.indexOf(). ٻاھر نڪتو: [نيپچون، وينس، ڌرتي، مارس، مشتري، زحل، يورينس، عطارد] [مرڪري، وينس، ڌرتي، مارس، مشتري، زحل، يورينس، نيپچون] آخر ۾، اسان ھڪڙي دلچسپ طريقي سان واقف ڪنداسين: disjoint(). اهو چيڪ ڪري ٿو ته ڇا ٻه مجموعا هڪ ٻئي سان ٽڪرائجن ٿا، يعني، ڇا انهن ۾ گهٽ ۾ گهٽ هڪ هڪجهڙائي وارو عنصر آهي . جيڪڏهن اهي نه ڪندا، اهو سچو موٽندو. اهو اهي ڪندا آهن، پوء اهو غلط موٽندو
public class Main {

   public static void main(java.lang.String[] args) {

       String mercury = new String("Mercury");
       String venus = new String("Venus");
       String earth = new String("Earth");
       String mars = new String("Mars");
       String jupiter = new String("Jupiter");
       String saturn = new String("Saturn");
       String uranus = new String("Uranus");
       String neptune = new String("Neptune");

       ArrayList<String> solarSystemPart1 = new ArrayList<>(Arrays.asList(mercury, venus, earth, mars));
       ArrayList<String> solarSystemPart2 = new ArrayList<>(Arrays.asList(jupiter, saturn, uranus, neptune));

       System.out.println(Collections.disjoint(solarSystemPart1, solarSystemPart2));

   }
}
جئين توهان ڏسي سگهو ٿا، اسان جي ٻن لسٽن ۾ مڪمل طور تي مختلف عناصر آهن، تنهنڪري پروگرام صحيح آهي . هي هڪ دلچسپ ۽ تمام مفيد طبقو آهي. جهڙوڪ Arrays، اهو اسان لاءِ تمام گهڻو معمولي، ٿڪائيندڙ ڪم ڪري ٿو، اسان کي ٻين شين تي توجه ڏيڻ ڏيو.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION