ذیلی فہرست () طریقہ کیا ہے؟
کلیکشن فریم ورک جاوا API میں ایک بہت مشہور جزو ہے۔ فہرست انٹرفیس اور ArrayList کلاس شاید کلیکشن فریم ورک میں سب سے اہم ٹولز ہیں۔ سب لسٹ لسٹ انٹرفیس کا ایک طریقہ ہے جو آپ کو موجودہ فہرست کے ایک حصے سے ایک نئی فہرست بنانے دیتا ہے۔ تاہم، یہ نئی بنائی گئی فہرست اصل فہرست کے حوالے سے صرف ایک منظر ہے۔
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() طریقہ واضح رینج آپریشنز کی ضرورت کو ختم کرتا ہے (یہ آپریشنز کی ایک قسم ہے جو عام طور پر صفوں کے لیے موجود ہوتی ہے)۔ یاد رکھنے کی سب سے اہم بات یہ ہے کہ ذیلی فہرست کا طریقہ کوئی نئی مثال نہیں لوٹاتا بلکہ اصل فہرست کے حوالے سے ایک نظارہ کرتا ہے۔ لہذا، اسی فہرست میں سب لسٹ طریقہ کو زیادہ استعمال کرنے سے آپ کے جاوا ایپلیکیشن میں تھریڈ پھنس سکتا ہے۔
مزید پڑھنا: |
---|
GO TO FULL VERSION