CodeGym /جاوا بلاگ /Random-UR /جاوا میں سب لسٹ () طریقہ: اری لسٹ اور لسٹ
John Squirrels
سطح
San Francisco

جاوا میں سب لسٹ () طریقہ: اری لسٹ اور لسٹ

گروپ میں شائع ہوا۔

ذیلی فہرست () طریقہ کیا ہے؟

کلیکشن فریم ورک جاوا API میں ایک بہت مشہور جزو ہے۔ فہرست انٹرفیس اور ArrayList کلاس شاید کلیکشن فریم ورک میں سب سے اہم ٹولز ہیں۔ سب لسٹ لسٹ انٹرفیس کا ایک طریقہ ہے جو آپ کو موجودہ فہرست کے ایک حصے سے ایک نئی فہرست بنانے دیتا ہے۔ تاہم، یہ نئی بنائی گئی فہرست اصل فہرست کے حوالے سے صرف ایک منظر ہے۔ جاوا میں سب لسٹ () طریقہ: ArrayList اور List - 1مثال کے طور پر [1,2,3,4,5,6] کی فہرست لیں۔ فرض کریں کہ آپ پہلے اور آخری عناصر کے بغیر ایک نئی فہرست بنانا چاہتے ہیں۔ ایسی صورت میں، list.subList() طریقہ آپ کی مدد کرے گا۔ subList(fromIndex, toIndex) طریقہ کار کی صرف ایک شکل ہے اور اس میں دو دلائل ہوتے ہیں، جو کہ پہلا انڈیکس (fromIndex) اور آخری انڈیکس (toIndex) ہیں ۔ یہ fromIndex اور toIndex کے درمیان کا حصہ ایک نئی فہرست کے طور پر واپس کر دے گا۔ یاد رکھنے کے لیے ایک اہم نکتہ ہے۔ نئی بنائی گئی فہرست میں fromIndex شامل ہو گا اور toIndex کو خارج کر دیا جائے گا۔ تو مندرجہ بالا منظر نامے کے لیے الگورتھم کچھ اس طرح ہوگا۔ فہرست = [1,2,3,4,5,6] newList = List.subList(1,5) چونکہ ذیلی فہرست فہرست انٹرفیس کا ایک طریقہ ہے، آپ اسے ArrayList، LinkedList، Stack، اور Vector اشیاء پر استعمال کرسکتے ہیں۔ تاہم، اس مضمون میں، ہم بنیادی طور پر ArrayList اور LinkedList اشیاء پر توجہ مرکوز کریں گے۔

ArrayList آبجیکٹ پر ذیلی فہرست کے طریقہ کار کی مثال۔

ہم ممالک کی ایک ArrayList کا اعلان کر رہے ہیں۔ پھر ہم 2nd اور 4th عناصر کے درمیان حصہ واپس کرنے کی کوشش کرتے ہیں.
import java.util.*;

public class Main {
    public static void main(String[] args) {
         // create an ArrayList
        ArrayList list = new ArrayList();
         // add values to ArrayList
         list.add("USA");
         list.add("UK");
         list.add("France");
         list.add("Germany");
         list.add("Russia");
        System.out.println("List of the countries:" + list);
         //Return the subList : 1 inclusive and 3 exclusive
        ArrayList new_list = new  ArrayList(list.subList(1, 3));
        System.out.println("The subList of the list: "+new_list);
    }
 }
اوپر والے کوڈ کی آؤٹ پٹ ہوگی۔
ممالک کی فہرست:[امریکہ، برطانیہ، فرانس، جرمنی، روس] فہرست کی ذیلی فہرست: [برطانیہ، فرانس]
ایک ArrayList میں، پہلے عنصر کی اشاریہ قیمت 0 ہے۔ اس لیے، دوسرے اور چوتھے عناصر کی اشاریہ کی قدریں بالترتیب 1 اور 3 ہیں۔ لہذا، ہم sublist() طریقہ کو list.subList(1, 3) کے طور پر استعمال کرتے ہیں ۔ تاہم، یاد رکھیں کہ ذیلی فہرست کا طریقہ ٹو انڈیکس کو چھوڑ کر حصہ لوٹاتا ہے جو اس معاملے میں چوتھا عنصر ("جرمنی") ہے۔ اس طرح یہ صرف "برطانیہ" اور "فرانس" کو آؤٹ پٹ کرے گا۔ چونکہ لوٹا ہوا آؤٹ پٹ بذات خود ایک فہرست ہے، اس لیے آپ کسی بھی فہرست کے طریقوں کو براہ راست اس پر کال کرسکتے ہیں۔ تو کیا ہوگا اگر ہم دونوں پیرامیٹرز کے لیے ایک ہی انڈیکس استعمال کریں؟ کیا اس انڈیکس کو واپس کی گئی فہرست میں شامل یا خارج کر دیا جائے گا؟ آئیے معلوم کرتے ہیں۔
//execute subList() method with the same argument for both parameters.
ArrayList new_list2 = new ArrayList(list.subList(3, 3));
System.out.println("The subList of the list: "+new_list2);
آؤٹ پٹ ہے۔
فہرست کی ذیلی فہرست: [ ]
آؤٹ پٹ ایک خالی فہرست ہے۔ اگرچہ fromIndex 4th عنصر کو منتخب کرتا ہے، subList() طریقہ اسے ہٹا دے گا کیونکہ یہ toIndex بھی ہے۔

لنکڈ لسٹ آبجیکٹ پر ذیلی فہرست کے طریقہ کار کی مثال۔

اس مثال میں، ہم LinkedList عنصر پر ذیلی فہرست کا طریقہ استعمال کریں گے۔ ایک بار پھر، یہ مخصوص انڈیکس سے Index(مشتمل) اور toIndex(exclusive) کے درمیان فہرست لوٹائے گا ۔ یاد رکھیں کہ ہم نے کہا ہے کہ ذیلی فہرست () طریقہ سے لوٹائی گئی فہرست صرف ایک منظر ہے جس کا اصل فہرست کا حوالہ ہے۔ اگر آپ ذیلی فہرست میں کوئی تبدیلی کرتے ہیں، تو یہ اصل فہرست کو بھی متاثر کرے گا۔ ہم اس مثال میں بھی اس کی جانچ کریں گے۔
import java.util.LinkedList;
import java.util.Iterator;
import java.util.List;

public class Main {

 public static void main(String[] args) {

    // Create a LinkedList
    LinkedList linkedlist = new LinkedList();

    // Add elements to LinkedList
    for(int i = 0; i<7; i++){
      linkedlist.add("Node "+ (i+1));
    }

    // Displaying LinkedList elements
    System.out.println("Elements of the LinkedList:");
    Iterator it= linkedlist.iterator();
    while(it.hasNext()){
       System.out.print(it.next()+ " ");
    }

    // invoke subList() method on the linkedList
    List sublist = linkedlist.subList(2,5);

    // Displaying SubList elements
    System.out.println("\nElements of the sublist:");
    Iterator subit= sublist.iterator();
    while(subit.hasNext()){
       System.out.print(subit.next()+" ");
    }

    /* The changes you made to the sublist will affect the     original LinkedList
     * Let’s take this example - We
     * will remove the element "Node 4" from the sublist.
     * Then we will print the original LinkedList.
     * Node 4 will not be in the original LinkedList too.
     */
    sublist.remove("Node 4");
    System.out.println("\nElements of the LinkedList LinkedList After removing Node 4:");
    Iterator it2= linkedlist.iterator();
    while(it2.hasNext()){
       System.out.print(it2.next()+" ");
    }
 }
}
آؤٹ پٹ اس طرح نظر آئے گا:
لنکڈ لسٹ کے عناصر: نوڈ 1 نوڈ 2 نوڈ 3 نوڈ 4 نوڈ 5 نوڈ 6 نوڈ 7 سب لسٹ کے عناصر: نوڈ 3 نوڈ 4 نوڈ 5 نوڈ 4 کو ہٹانے کے بعد لنکڈ لسٹ کے عناصر: نوڈ 1 نوڈ 2 نوڈ 3 نوڈ 5 نوڈ نوڈ 7

کیا ہوگا اگر اشاریہ جات ذیلی فہرست () میں پابند نہیں ہیں؟

ذیلی فہرست کا طریقہ دو قسم کی مستثنیات واپس کرتا ہے۔ آئیے ان پر ایک نظر ڈالتے ہیں۔ اس صورت حال پر غور کریں اگر مخصوص اشاریہ جات فہرست عنصر کی حد سے باہر ہیں (fromIndex < 0 || toIndex > size) ۔ پھر یہ ایک پھینک دے گا IndexOutOfBoundExecption ۔
//using subList() method with fromIndex <0
ArrayList new_list2 = new ArrayList(list.subList(-1, 3));
System.out.println("Portion of the list: "+new_list2);

Exception in thread "main" java.lang.IndexOutOfBoundsException: fromIndex = -1

// using subList() method with toIndex > size
ArrayList new_list2 = new ArrayList(list.subList(3, 6));
System.out.println("Portion of the list: "+new_list2);

Exception in thread "main" java.lang.IndexOutOfBoundsException: toIndex = 6
اس کے علاوہ، اگر fromIndex toIndex (fromIndex > toIndex) سے بڑا ہے ، subList() طریقہ ایک IllegalArgumentException ایرر پھینک دیتا ہے۔
//If fromIndex > toIndex
ArrayList new_list2 = new ArrayList(list.subList(5, 3));
System.out.println("Portion of the list: "+new_list2);

Exception in thread "main" java.lang.IllegalArgumentException: fromIndex(5) > toIndex(3)

نتیجہ

اس مضمون میں، ہم نے ذیلی فہرست کے طریقہ کار اور اسے استعمال کرنے کے طریقہ پر تبادلہ خیال کیا۔ subList() طریقہ واضح رینج آپریشنز کی ضرورت کو ختم کرتا ہے (یہ آپریشنز کی ایک قسم ہے جو عام طور پر صفوں کے لیے موجود ہوتی ہے)۔ یاد رکھنے کی سب سے اہم بات یہ ہے کہ ذیلی فہرست کا طریقہ کوئی نئی مثال نہیں لوٹاتا بلکہ اصل فہرست کے حوالے سے ایک نظارہ کرتا ہے۔ لہذا، اسی فہرست میں سب لسٹ طریقہ کو زیادہ استعمال کرنے سے آپ کے جاوا ایپلیکیشن میں تھریڈ پھنس سکتا ہے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION