CodeGym /جاوا بلاگ /Random-SD /جاوا ۾ مجموعا
John Squirrels
سطح
San Francisco

جاوا ۾ مجموعا

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

جاوا ۾ جمع ڇا آهي؟

جاوا ۾ هڪ مجموعو هڪ ڪنٽينر جي طور تي پيش ڪيو ويو آهي جيڪو سڀني عناصر کي هڪ واحد يونٽ ۾ گروپ ڪري ٿو. مثال طور ، هڪ ميل فولڊر (اي ميلن جو گروپ)، هڪ ٽيليفون ڊاريڪٽري (فون نمبرن تي نالن جو نقشو).

فريم ورڪ ڇا آهي؟

هڪ فريم ورڪ هڪ بنيادي بنياد يا ترتيب آهي جنهن تي توهان مختلف طبقن ۽ مهيا ڪيل انٽرفيس کي استعمال ڪندي ڪم ڪرڻ شروع ڪندا آهيو. مثال طور ، Laravel هڪ تمام مشهور PHP فريم ورڪ آهي جيڪو توهان جي ايپليڪيشن لاءِ بنيادي ڍانچو مهيا ڪري ٿو.

جاوا ۾ جمع فريم ورڪ ڇا آهي؟

سڀئي شيون ھڪڙي ھڪڙي اعتراض ۾ گڏ ڪيا ويا آھن ھڪڙي آرڪيٽيڪچر سان جيڪي نمائندگي ڪن ٿا ۽ گڏ ڪرڻ لاء مختلف طريقا مهيا ڪن ٿا. تنهن ڪري جاوا ۾ ڪليڪشن فريم ورڪ مختلف ڊيٽا ڍانچي مهيا ڪري ٿو جيڪي اڳ ۾ ئي ڊيٽا ۽ طريقن کي محفوظ ڪرڻ لاءِ لاڳو ڪيا ويا آهن، انهن کي ترتيب ڏيڻ، ڳولها، حذف ڪرڻ، ۽ داخل ڪرڻ جي خاصيتن سان ترتيب ڏيڻ . مثال طور ، توهان ڪجهه بي ترتيب واري ڪمپني لاءِ هڪ سسٽم لاڳو ڪرڻ چاهيو ٿا ته جيئن انهن جي گراهڪن جي خدمت کي بهتر بڻائي، پهرين اچو پهرين خدمت جي بنياد تي. اهو پڻ FIFO طور سڃاتو وڃي ٿو (پهرين ۾ پهريون) عمل درآمد. هاڻي اسان کي هن ڊيٽا جي جوڙجڪ کي لاڳو ڪرڻ جي ضرورت آهي ۽ پوء ان کي استعمال ڪرڻ لاء اسان جي مقصد حاصل ڪرڻ لاء. گڏ ڪرڻ وارو فريم ورڪ اسان کي هڪ قطار انٽرفيس فراهم ڪري ٿو جنهن کي اسان کي صرف درآمد ڪرڻ جي ضرورت آهي بجاءِ لاڳو ڪرڻ، پوءِ ان کي استعمال ڪريو، ۽ اسان ٿي چڪا آهيون. عمل درآمد : توھان ھيٺ ڏنل لائين استعمال ڪندي سڀ مجموعا درآمد ڪري سگھو ٿا:
import java.util.*;
جيڪڏهن توهان هڪ مخصوص مجموعو درآمد ڪرڻ چاهيو ٿا ته پوءِ صحيح پيڪيج جو نالو استعمال ڪريو، جهڙوڪ:
import java.util.LinkedList;

جاوا ۾ مجموعن جي فريم ورڪ جا فائدا

هن جا هيٺيان فائدا آهن.
  1. اڳ ۾ ئي لاڳو (وقت بچائڻ).
  2. ڪارڪردگي ڪارڪردگي (رفتار ۽ معيار).
  3. نئين APIs سکڻ ۽ استعمال ڪرڻ جي ڪوشش گھٽائي ٿي.

ڪليڪشن فريم ورڪ جو درجو ڇا آهي؟

ھاڻي اچو ته مجموعن جي درجي بندي کي ڏسو پر پھريون، اسان کي ھن فريم ورڪ جي ضروري حصن کي ڄاڻڻ جي ضرورت آھي.
  1. انٽرفيس
  2. ڪلاس (عمل درآمد)
  3. الگورتھم

گڏ ڪرڻ واري فريم ورڪ جو درجو

جاوا ۾ مجموعا - 1توھان جي سمجھ لاءِ:
  1. گڏ ڪرڻ، سيٽ، قطار، ۽ فهرست سڀ انٽرفيس آھن. سيٽ، قطار ۽ فهرست جمع ٿيل انٽرفيس پاران وڌايو ويو آھي.
  2. PriorityQueue، HashSet، LinkedList، ۽ Stack سڀ ڪلاس آھن يا انھن انٽرفيس جو نفاذ.
  3. اهو لازمي ناهي ته هڪ ڪلاس صرف هڪ انٽرفيس کي لاڳو ڪري . LinkedList پڻ لاڳو ڪري ٿو Deque انٽرفيس، مثال طور.

مجموعن جا قسم

جاوا گڏ ڪرڻ واري فريم ورڪ ۾ ڪيترن ئي قسمن جا مجموعا آهن ان ۾ اسان جي ڪوششن کي گهٽائڻ لاءِ. هتي ڪجھ مجموعن جي هڪ فهرست آهي:
  1. ArrayList ڪلاس
  2. LinkedList ڪلاس
  3. لسٽ انٽرفيس
  4. انٽرفيس سيٽ ڪريو
  5. قطار انٽرفيس
  6. نقشو انٽرفيس
  7. ترجيحي قطار ڪلاس
  8. HashMap ڪلاس
  9. موازنہ انٽرفيس
  10. LinkedHashMap ڪلاس
  11. TreeMap ڪلاس
  12. هيش ٽيبل

جمع انٽرفيس

هتي اسان ڪجهه عام گڏ ڪرڻ واري انٽرفيس تي بحث ڪنداسين ۽ پوءِ ڪلاسز پاران لاڳو ڪيل ڪجهه طريقا.

جمع انٽرفيس

هي مجموعن جي فريم ورڪ لاءِ هڪ بنيادي بنياد آهي جيئن اهو لاڳو ڪرڻ لاءِ تمام ضروري طريقا مهيا ڪري ٿو. نقشو واحد ڊيٽا جو ڍانچو آهي جيڪو ان تي عمل نه ٿو ڪري پر باقي سڀئي ان جي طريقن کي لاڳو ڪن ٿا. ھن انٽرفيس ۾ گڏ ڪرڻ جي ماپ کي ڄاڻڻ جا طريقا آھن، ۽ ڇا ڪو اعتراض ڪليڪشن ۾ موجود آھي، مجموعن مان شيون شامل ڪرڻ يا ختم ڪرڻ.

Iterable انٽرفيس

اهو ڪليڪشن فريم ورڪ لاءِ روٽ انٽرفيس آهي جيئن ته اهو ڪليڪشن انٽرفيس طرفان وڌايو ويو آهي جيڪو سڀني طبقن پاران لاڳو ڪيو ويندو آهي. اهو مخصوص مجموعو لاءِ هڪ آئٽرٽر واپس ڪري ٿو ان تي ٻيهر ڪرڻ لاءِ.

قطار انٽرفيس

قطار عناصر کي رکڻ لاء استعمال ڪيو ويندو آهي پر انهن تي عمل نه ٿو ڪري سگهجي. بنيادي گڏ ڪرڻ جي عملن کي لاڳو ڪرڻ، اهو پڻ اضافي داخل ڪرڻ ۽ ڪڍڻ جا طريقا مهيا ڪري ٿو.

انٽرفيس سيٽ ڪريو

سيٽ ان ۾ منفرد عناصر رکڻ لاء استعمال ڪيو ويندو آهي. اهو ڪڏهن به نقلي عنصرن تي مشتمل ناهي ۽ رياضياتي سيٽ تجريد جو ماڊل سيٽ جي نمائندگي ڪرڻ لاءِ جيئن ته مشين تي هلندڙ عمل.

لسٽ انٽرفيس

لسٽ هڪ ترتيب ڏنل مجموعو آهي ڪڏهن ڪڏهن هڪ ترتيب سڏيو ويندو آهي جيڪو ان ۾ نقلي عناصر رکي سگهي ٿو. اهو صارف کي هڪ مخصوص عنصر کي اپڊيٽ ڪرڻ يا ختم ڪرڻ لاءِ ڪنٽرول مهيا ڪري ٿو، انٽيجر انڊيڪس ويليو استعمال ڪندي هڪ خاص نقطي تي هڪ عنصر داخل ڪرڻ. LinkedList ۽ ArrayList لسٽ انٽرفيس جا عمل درآمد ڪلاس آھن.

ڊيڪ انٽرفيس

ڊيڪ جو مطلب آهي ڊبل ختم ٿيل قطار جنهن جو مطلب آهي ته اسان ٻنهي سرن تي آپريشن ڪري سگهون ٿا. اسان ٻنهي سرن کان عناصر داخل ۽ ختم ڪري سگھون ٿا. Deque انٽرفيس قطار انٽرفيس کي وڌايو. ArrayDeque ۽ LinkedList ٻئي Deque انٽرفيس کي لاڳو ڪن ٿا. اهو طريقو مهيا ڪري ٿو داخل ڪرڻ، حذف ڪرڻ، ۽ مثال کي ٻنهي سرن کان جانچڻ.

نقشو انٽرفيس

ميپ انٽرفيس پڻ ڪليڪشن فريم ورڪ جو حصو آھي پر اھو ڪليڪشن انٽرفيس کي نه ٿو وڌائي. اهو استعمال ڪيو ويندو آهي اهم-قدر جوڙو ذخيرو ڪرڻ لاء. هن جا مکيه عمل آهن HashMap، TreeMap، ۽ LinkesHashMap جيڪي ڪجهه حصن ۾ HashSet، TreeSet، ۽ LinkedHashSet سان ملندڙ جلندڙ آهن. اهو هميشه منفرد ڪنجيون تي مشتمل آهي پر قدرن کي نقل ڪري سگهجي ٿو. اهو ڪارائتو آهي جڏهن توهان کي شامل ڪرڻ، حذف ڪرڻ، يا چاٻي جي بنياد تي هڪ شيءِ ڳولڻ جي ضرورت آهي. اهو اسان کي بنيادي طريقن سان مهيا ڪري ٿو جهڙوڪ put , get , remove , size , empty , وغيره.

هنن انٽرفيس جا عام طريقا

ھاڻي ھن فريم ورڪ ۾ مختلف طبقن کي لاڳو ڪرڻ لاءِ مهيا ڪيل ڪجھ عام طريقن کي ڏسنداسين سواءِ نقشي جي انٽرفيس جي.
طريقا وصف
عوامي بوليان اضافو (اي اي) مجموعي ۾ هڪ عنصر داخل ڪرڻ لاء استعمال ڪيو ويو
عوامي بوليان هٽايو (آبجڪٽ عنصر) مجموعي مان هڪ عنصر کي هٽائڻ لاء استعمال ڪيو ويو
عوامي int سائيز() ھڪڙي مجموعي ۾ عناصر جو تعداد واپس ڪري ٿو
عوامي بوليان تي مشتمل آهي (آبجڪٽ عنصر) هڪ عنصر ڳولڻ لاء استعمال ڪيو ويو
عوامي بوليان خالي آهي () چيڪ ڪريو ته جمع خالي آهي
عوامي بوليان برابر (آبجڪٽ عنصر) برابري جي جانچ ڪري ٿو

جمع ڪلاس

جيئن اسان ڄاڻون ٿا ته فريم ورڪ ۾ مختلف انٽرفيس آهن جيڪي ان جي اندر ڪيترن ئي طبقن پاران لاڳو ڪيا ويا آهن. هاڻي اچو ته ڪجهه عام استعمال ٿيل طبقن تي هڪ نظر رکون.

LinkedList

اهو سڀ کان عام طور تي استعمال ٿيل ڊيٽا جي جوڙجڪ آهي جيڪو ان جي اندر عناصر کي ذخيرو ڪرڻ لاء هڪ ٻيڻو ڳنڍيل فهرست لاڳو ڪري ٿو. اهو نقلي عناصر کي ذخيرو ڪري سگھي ٿو. اهو قطار انٽرفيس ۽ لسٽ انٽرفيس پاران وڌايو ويو Dequeue انٽرفيس کي لاڳو ڪري ٿو. اهو هم وقت سازي نه آهي. هاڻي اچو ته ڏسون ته اسان جو مسئلو ڪيئن حل ڪجي مٿي ڄاڻايل (FIFO تصور) LinkedList استعمال ڪندي. مسئلو اهو آهي ته گراهڪن جي خدمت ڪرڻ جي طريقي سان اهي پهچندا آهن يعني پهرين ۾ پهرين ٻاهر .

مثال

import java.util.*;

public class LinkedListExample {
    public static void main(String[] args) {
        Queue<String> customerQueue = new LinkedList<String>();
        //Adding customers to the Queue as they arrived
        customerQueue.add("John");
        customerQueue.add("Angelina");
        customerQueue.add("Brooke");
        customerQueue.add("Maxwell");

        System.out.println("Customers in Queue:"+customerQueue);
        //element() => returns head of the queue
        //we will see our first customer and serve him
        System.out.println("Head of the queue i.e first customer: "+customerQueue.element());
        //remove () method =>removes first element(customer) from the queue i.e the customer is served so remove him to see next
        System.out.println("Element removed from the queue: "+customerQueue.remove());
        //poll () => removes and returns the head
        System.out.println("Poll():Returned Head of the queue: "+customerQueue.poll());
        //print the remaining customers in the Queue
        System.out.println("Final Queue:"+customerQueue);
    }
}

پيداوار

قطار ۾ موجود گراهڪ:[John, Angelina, Brooke, Maxwell] Head of the queue يعني پهريون گراهڪ: John Element کي قطار مان ڪڍيو ويو: John Poll():Returned Head of the queue: Angelina Final Queue:[Brooke, Maxwell]

ArrayList

اهو صرف لسٽ انٽرفيس کي لاڳو ڪري ٿو. اهو داخل ڪرڻ جي ترتيب کي برقرار رکي ٿو ۽ مختلف ڊيٽا جي قسمن جي عناصر کي ذخيرو ڪرڻ لاء متحرڪ صف استعمال ڪري ٿو. عنصرن کي نقل ڪري سگهجي ٿو. اهو پڻ غير هم وقت سازي آهي ۽ نيل قدرن کي محفوظ ڪري سگهي ٿو. ھاڻي اچو ته ان جا مختلف طريقا ڏسو... اھي ڪارآمد آھن جڏھن اسان کي خبر ناھي ته اسان کي ڪيترا رڪارڊ يا عنصر داخل ڪرڻا آھن. اچو ته هڪ لائبريريءَ جو مثال وٺون جتي اسان کي خبر ناهي ته اسان کي ڪيترا ڪتاب رکڻا آهن. تنهن ڪري جڏهن به اسان وٽ ڪو ڪتاب آهي، اسان کي ان کي ArrayList ۾ داخل ڪرڻ جي ضرورت آهي.

مثال

public class ArrayListExample {
	public static void main(String args[]) {

		// Creating the ArrayList
		ArrayList<String> books = new ArrayList<String>();

		// Adding a book to the list
		books.add("Absalom, Absalom!");
		// Adding a book in array list
		books.add("A Time to Kill");
		// Adding a book to the list
		books.add("The House of Mirth");
		// Adding a book to the list
		books.add("East of Eden");
		// Traversing the list through Iterator
		Iterator<String> itr = books.iterator();
		while (itr.hasNext()) {
			System.out.println(itr.next());
		}
	}
}

پيداوار

ابشالوم، ابشالوم! هڪ وقت مارڻ لاءِ هائوس آف ميرٿ ايسٽ آف ايڊن

HashSet

اهو سيٽ انٽرفيس کي لاڳو ڪري ٿو ۽ ڪڏهن به نقلي قدرن تي مشتمل ناهي. اهو قدرن کي محفوظ ڪرڻ لاءِ هيش ٽيبل لاڳو ڪري ٿو. اهو پڻ null قدر جي اجازت ڏئي ٿو. اهو ڪڏهن به داخل ڪرڻ جي ترتيب کي برقرار نٿو رکي پر شامل ڪرڻ ، ختم ڪرڻ ، سائيز ، ۽ طريقن تي مشتمل لاء مسلسل وقت جي ڪارڪردگي مهيا ڪري ٿو . اهو ڳولا جي عملن لاء بهترين آهي ۽ اهو هم وقت سازي نه آهي.

مثال

import java.util.*;
class HashSetExample{
    public static void main(String args[]){
        //creating HashSet and adding elements to it
        HashSet<Integer> hashSet=new HashSet();
        hashSet.add(1);
        hashSet.add(5);
        hashSet.add(4);
        hashSet.add(3);
        hashSet.add(2);
        //getting an iterator for the collection
        Iterator<Integer> i=hashSet.iterator();
        //iterating over the value
        while(i.hasNext())  {
            System.out.println(i.next());
        }
    }
}

پيداوار

1 2 3 4 5
جئين توهان ڏسي سگهو ٿا اهو داخل ڪرڻ جي ترتيب کي برقرار نٿو رکي.

ArrayDeque

اهو Deque انٽرفيس کي لاڳو ڪري ٿو، تنهنڪري اهو ٻنهي سرن کان آپريشن جي اجازت ڏئي ٿو. اهو null قدرن جي اجازت نٿو ڏئي. اهو اسٽيڪ ۽ LinkedList کان تيز آهي جڏهن اسٽيڪ ۽ LinkedList طور لاڳو ڪيو ويو آهي. ArrayDeque ۾ ڪا به سائيز جي پابندي ناهي جيئن اها وڌندي ۽ ڇڪي وڃي ضرورتن مطابق. اهو غير هم وقت ٿيل آهي، مطلب ته اهو موضوع کان محفوظ ناهي. ان سلسلي کي محفوظ رکڻ لاءِ اسان کي ڪجهه خارجي منطق کي لاڳو ڪرڻو پوندو.

مثال

import java.util.*;
public class ArrayDequeExample {
   public static void main(String[] args) {
       //creating Deque and adding elements
       Deque<String> deque = new ArrayDeque<String>();
       //adding an element
       deque.add("One");
       //adding an element at the start
       deque.addFirst("Two");
       //adding an element at the end
       deque.addLast("Three");
       //traversing elements of the collection
       for (String str : deque) {
            System.out.println(str);
       }
   }
}

پيداوار

ٻه هڪ ٽي

HashMap

اهو نقشي جي انٽرفيس تي عمل درآمد آهي جنهن جي پٺڀرائي آهي هيش ٽيبل. اهو اهم-قدر جوڙو ذخيرو ڪري ٿو. اهو null قدرن جي اجازت نٿو ڏئي. اهو هم وقت سازي نه آهي. اهو ڪڏهن به داخل ڪرڻ جي حڪم جي ضمانت نٿو ڏئي. اهو طريقن جي لاء مسلسل وقت جي ڪارڪردگي مهيا ڪندو آهي جهڙوڪ get , and put . ان جي ڪارڪردگي جو دارومدار ٻن عنصرن تي آهي - شروعاتي گنجائش ۽ لوڊ فيڪٽر . ظرفيت هيش ٽيبل ۾ بالٽ جو تعداد آهي، تنهنڪري ابتدائي ظرفيت پيدا ٿيڻ وقت مختص ڪيل بالٽ جو تعداد آهي. لوڊ فيڪٽر اهو اندازو آهي ته ڪيترو هش ٽيبل ان جي گنجائش وڌائڻ کان اڳ آباد ٿي سگهي ٿو. ريش جو طريقو ظرفيت کي وڌائڻ لاءِ استعمال ڪيو ويندو آهي ۽ اهو خاص طور تي ٻڪرين جي تعداد کي ٻيڻو ڪري ٿو.

مثال

import java.util.*;
public class HashMapExample{
    public static void main(String args[]){
        //creating a HashMap
        HashMap<Integer,String> map=new HashMap<Integer,String>();
        //putting elements into the map
        map.put(1,"England");
        map.put(2,"USA");
        map.put(3,"China");

        //get element at index 2
        System.out.println("Value at index 2 is: "+map.get(2));
        System.out.println("iterating map");
        //iterating the map
        for(Map.Entry m : map.entrySet()){
            System.out.println(m.getKey()+" "+m.getValue());
        }
    }
}

پيداوار

انڊيڪس 2 تي قدر آهي: چين ٻيهر ورجائيندڙ نقشو 1 انگلينڊ 2 آمريڪا 3 چين

الگورتھم

مجموعن جو فريم ورڪ اسان کي مجموعن تي لاڳو ڪرڻ لاءِ مختلف عملن لاءِ مختلف الگورتھم مهيا ڪري ٿو. هتي اسان ڏسنداسين ته ڪهڙيون وڏيون ڪارروايون انهن الگورتھم سان ڍڪيل آهن. ان سان لاڳاپيل الگورتھم شامل آھن:
  1. ترتيب ڏيڻ
  2. ڳولهي رهيو آهي
  3. ڇڪڻ
  4. ڊيٽا جي معمولي ڦيرڦار
  5. ساخت
  6. انتهائي قدر ڳولڻ
بهتر سمجھڻ لاءِ اسين ترتيب ڏيڻ واري الگورتھم تي بحث ڪنداسين.

ترتيب ڏيڻ

ترتيب ڏنل الگورتھم ھڪڙي ترتيب واري رشتي جي مطابق ھڪڙي فهرست کي ترتيب ڏئي ٿو. رشتي جا ٻه روپ مهيا ڪيا ويا آهن.
  1. قدرتي ترتيب
  2. مقابلي جي ترتيب

قدرتي ترتيب

قدرتي ترتيب ۾ هڪ فهرست ان جي عناصر جي مطابق ترتيب ڏنل آهي.

مقابلي جي ترتيب

هن فارم ۾ هڪ اضافي پيٽرولر ترتيب ڏيڻ، جيڪو هڪ موازنہ آهي، لسٽ سان گڏ گذريو ويو آهي. هڪ ٿورڙي بهتر ڪيل ضم ڪرڻ وارو الگورتھم استعمال ڪيو ويندو آهي ترتيب ڏيڻ لاءِ جيڪو تيز ۽ مستحڪم آهي ڇاڪاڻ ته اهو n log(n) هلندڙ وقت جي ضمانت ڏئي ٿو ۽ اهو برابر عناصر کي ٻيهر ترتيب نٿو ڏئي. اسان ساڳيو مثال استعمال ڪنداسين ArrayList مان ترتيب ڏيڻ لاءِ.

مثال

import java.util.*;
public class SortingExample{
    public static void main(String args[]){
        //Creating arraylist
        ArrayList<String> books=new ArrayList<String>();
        //Adding a book to the arraylist
        books.add("A Time to Kill");
        //Adding a book to the arraylist
        books.add("Absalom, Absalom!");
        //Adding a book to the arraylist
        books.add("The House of Mirth");
        //Adding a book to the arraylist
        books.add("East of Eden");
        //Traversing list through Iterator before sorting
        Iterator itrBeforeSort=books.iterator();
        while(itrBeforeSort.hasNext()){
            System.out.println(itrBeforeSort.next());
        }
        //sorting the books
        Collections.sort(books);
        System.out.println("After sorting the books");
        //Traversing list through Iterator after sorting
        Iterator itr=books.iterator();
        while(itr.hasNext()){
            System.out.println(itr.next());
        }
    }
}

پيداوار

ابشالوم کي مارڻ جو وقت، ابشالوم! The House of Mirth East of Eden جي ڪتابن کي ترتيب ڏيڻ کان پوءِ A Time to Kill Absalom، Absalom! عدن جي اوڀر ۾ ميرٿ جو گھر

نتيجو

اسان کي اميد آهي ته هاڻي توهان سمجهي رهيا آهيو ته جاوا گڏ ڪرڻ جو فريم ورڪ ڇا آهي، ان جا انٽرفيس ۽ ڪلاس ڇا آهن ۽ ان جي مختلف طبقن کي ڪيئن لاڳو ڪجي. توھان ھميشه ھن فريم ورڪ کي استعمال ڪري سگھوٿا جاوا ۾ پنھنجي ڪوششن کي گھٽائڻ لاءِ. مشق ڪرڻ لاء آزاد محسوس ڪريو ۽ هتي واپس وڃو جڏهن توهان کي وڌيڪ مدد جي ضرورت آهي. خوش تعليم!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION