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

جاوا لسٽ

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

جاوا لسٽ انٽرفيس

هڪ فهرست بابت سڀ کان اهم شيء اها آهي ته اهو هڪ ترتيب ڏنل مجموعو آهي. توهان ان کي هڪ تسلسل پڻ سڏي سگهو ٿا. جاوا ۾، فهرستون هڪجهڙائي وارا آهن، اهو آهي، فهرست جا عنصر ساڳيا ڊيٽا جي قسم جا آهن. جاوا لسٽ انٽرفيس ڪليڪشن مان ورثي ۾ ملي ٿو، ان جي سڀني عملن کي ورثي ۾ ملي ٿو. انهن کان علاوه، فهرست ۾ هيٺيان عمل پڻ ممڪن آهن:
  • پوزيشن رسائي. هر عنصر هڪ انڊيڪس آهي ۽ انهن جي پوزيشن جي بنياد تي ٺاهي سگهجي ٿو. فهرست ۾. اھو آھي، توھان عناصر شامل ڪري سگھو ٿا، خارج ڪري سگھو ٿا ۽ تبديل ڪري سگھو ٿا.
  • ڳولا. توھان ھڪڙي عنصر کي ھڪڙي فهرست ۾ ان جي مواد جي ذريعي ڳولي سگھو ٿا ۽ ان جي انڊيڪس واپس ڪري سگھو ٿا.
  • ورجائي. فهرست جي ترتيب واري نوعيت کي استعمال ڪرڻ جي اجازت ڏئي ٿي iteration طريقن (listIterator).
  • رينج- ڏيک. ذيلي فهرست جو طريقو لسٽ تي صوابديدي رينج جي عملن کي انجام ڏئي ٿو.

جاوا لسٽ جا طريقا

مٿين عملن جاوا لسٽ انٽرفيس جي طريقن ۾ ظاهر ڪيا ويا آهن. هتي انهن مان ڪجهه آهي:
طريقو وصف
شامل ڪريو (اي عنصر) اهو طريقو هن فهرست جي آخر ۾ عنصر عنصر شامل ڪري ٿو.
شامل ڪريو (انڊيڪس، عنصر) اهو طريقو فهرست ۾ هڪ خاص انڊيڪس تي هڪ عنصر شامل ڪري ٿو. جيڪڏهن گهربل پيٽرولر گذري ويو آهي، اهو عنصر شامل ڪري ٿو لسٽ جي آخر ۾.
AddAll (int index، گڏ ڪرڻ جو مجموعو) فهرست ۾ ڏنل مجموعي ۾ سڀني عنصرن کي شامل ڪري ٿو. جيڪڏهن هڪ واحد پيٽرولر گذري ويو آهي، اهو فهرست جي آخر ۾ ڏنل مجموعي جي سڀني عناصر کي شامل ڪري ٿو.
ماپ() لسٽ جي سائيز کي واپس ڪري ٿو (فهرست ۾ عناصر جي مقدار).
حاصل (int index) بيان ڪيل انڊيڪس تي عنصر واپسي.
سيٽ (انڊيڪس، عنصر) نئين عنصر سان ڏنل انڊيڪس تي عناصر کي تبديل ڪري ٿو ۽ عنصر کي واپس ڏئي ٿو جيڪو نئين عنصر سان تبديل ڪيو ويو.
هٽايو (int index) مخصوص انڊيڪس مان هڪ عنصر هٽائي ٿو.
هٽايو (عنصر) لسٽ ۾ ڏنل عنصر جي پهرين واقعن کي هٽائي ٿو.
صاف () فهرست مان سڀني عناصر کي هٽائي ٿو.
انڊيڪس آف (عنصر) ڏنل عنصر جو پهريون واقعو واپس ڏئي ٿو. جيڪڏهن عنصر فهرست ۾ موجود نه آهي، واپسي -1 .
lastIndexOf(عنصر) ڏنل عنصر جي آخري واقعن کي واپس ڏئي ٿو. جيڪڏهن عنصر فهرست ۾ موجود نه آهي، واپسي -1 .
برابر (عنصر) ڏنل عنصر جي برابري کي فهرست جي عناصر سان ڀيٽيو.
hashCode() ڏنل فهرست جي hashcode قدر واپس آڻيو.
خالي آهي() چيڪ ڪري ٿو ته لسٽ خالي آهي. واپسي صحيح آھي جيڪڏھن لسٽ خالي آھي.
تي مشتمل آهي (عنصر) چيڪ ڪري ٿو ته فهرست ۾ عنصر شامل آهي . واپسي صحيح آھي جيڪڏھن فهرست ۾ عنصر شامل آھي.
سڀني تي مشتمل آهي (مجموعي جو مجموعو) چيڪ ڪري ٿو ته لسٽ ۾ عناصر جي سڀني مجموعن تي مشتمل آهي.
ترتيب (مقابلي ڪندڙ comp) ڏنل مقابلي جي بنياد تي لسٽ جي عناصر کي ترتيب ڏيو.
ذيلي لسٽ (Index from Index، int to Index) ھن لسٽ جي ھڪڙي حصي جو ڏيک ڏي ٿو بيان ڪيل وچ ۾ Index، inclusive ۽ toIndex، exclusive.

لسٽ تي عملدرآمد

ڇاڪاڻ ته لسٽ هڪ انٽرفيس آهي، پروگرامن کي ان جي ٺاهه تي عمل درآمد ڪرڻ جي ضرورت آهي. توھان منتخب ڪري سگھوٿا ھيٺ ڏنل فهرست جي عملن جي وچ ۾ جاوا ڪليڪشن API ۾:
  • java.util.ArrayList
  • java.util.LinkedList
  • java.util.Vector
  • java.util.Stack
لسٽ انٽرفيس جو سڀ کان وڌيڪ مشهور نفاذ ArrayList سڏيو ويندو آهي. گهڻو ڪري گهٽ، پر توهان اڃا تائين حقيقي ڪمن ۾ LinkedList جو استعمال ڏسي سگهو ٿا، پر ویکٹر ۽ اسٽيڪ هڪ ڊگهي وقت تائين اخلاقي طور تي ختم ٿي چڪا آهن، تنهنڪري توهان گهڻو ڪري انهن کي صرف قديم ورثي واري ڪوڊ سان منصوبن ۾ ڳوليندا.

لسٽ انٽرفيس اعلان

توھان ھيٺ ڏنل طريقن مان ھڪڙي ۾ جاوا پروگرام ۾ ھڪڙي فهرست جو اعلان ڪري سگھو ٿا:

List<String> myList = new ArrayList();
List myList1 = new ArrayList();
List myList3 = new ArrayList<String>();
ArrayList arrayList = new ArrayList();
اهو بهترين آهي هڪ انٽرفيس ذريعي نئين لسٽ جو اعلان ڪرڻ. اهڙي طرح، توهان فهرست جي ٻين عملن جو اعلان ڪري سگهو ٿا. مختصر ترين طريقو:

Vector myVector = new Vector;
LinkedList linkedList = new LinkedList();
Stack stack = new Stack();
اهڙي بيان سان، اهڙين فهرستن جي عناصر جي ڊيٽا جو قسم لسٽ جي شروعات دوران طئي ڪيو ويندو آهي، اهو آهي، جڏهن عناصر اتي شامل ڪيا ويا آهن.

List myList = new ArrayList<String>();
Vector myVector = new Vector();
LinkedList linkedList = new LinkedList();
Stack stack = new Stack();
stack.add("Paul");
linkedList.add(1);
myVector.add(1.2f);
myList.add('a');
ھاڻي اسان جي اسٽيڪ ۾ صرف اسٽرنگ شامل ڪري سگھجن ٿا، انٽيجرز LinkedList ۾ ، floats to myVector ، ۽ myList اکرن جي لسٽ آھي.

ڪيئن ArrayList ڪم ڪري ٿو

جيڪڏهن توهان اڳ ۾ ئي واقف آهيو باقاعده صفن سان، توهان پڻ ڪجهه حد تائين واقف آهيو ArrayList سان. حقيقت ۾، ArrayList هڪ متحرڪ صف آهي، ۽ ان جي اندر هڪ عام صف آهي. هي صف هڪ ڊيٽا اسٽور طور ڪم ڪري ٿو. ArrayList اسٽور صرف حوالن جا قسم، ڪي به شيون، بشمول ٽئين پارٽي جا طبقا، اسٽرنگ، آئوٽ پٽ اسٽريم، ۽ ٻيا مجموعا. ريپر ڪلاس استعمال ڪيا ويا آھن پراڻي ڊيٽا جي قسمن کي ذخيرو ڪرڻ لاءِ ArrayList. جڏهن هڪ فهرست ٺاهي، اسان ان جي سائيز کي فوري طور تي مقرر ڪري سگهون ٿا، پر اڪثر ڪيسن ۾ اسان نه ڪندا آهيون. ڊفالٽ طور، ArrayList سائيز = 10. ArrayList ۾ نئون عنصر شامل ڪرڻ سان ڇا نظر ايندو؟ سڀ کان پهريان، هڪ چيڪ شروع ڪيو ويو آهي ڏسڻ لاء ته ڇا اندروني صف ۾ ڪافي جاء آهي ۽ ڇا هڪ وڌيڪ عنصر مناسب ٿيندو. جيڪڏهن جڳهه آهي، نئين عنصر لسٽ جي آخر ۾ شامل ڪيو ويو آهي، اهو آهي، سيل ڏانهن جيڪو آخري عنصر جي پٺيان آهي. ان جي انڊيڪس arraylist.size(). جيڪڏهن اسان صرف پنهنجي لسٽ ٺاهي آهي ۽ اها خالي آهي، ان جو مطلب آهي ته arrayList.size() = 0. ان مطابق، هڪ نئون عنصر سيل ۾ انڊيڪس 0 سان شامل ڪيو ويندو. جيڪڏهن اهو ظاهر ٿئي ٿو ته ڪافي جاء ناهي، هڪ نئون Array کي ArrayList جي اندر سائيز سان ٺاهيو ويو آهي (OldArray * 1.5 جي سائيز) + 1. ساڳئي اصول موجب، لسٽ جي وچ ۾ هڪ داخل ٿئي ٿو، پر ساڳئي وقت، سڀئي عنصر جيڪي داخل ٿيل عنصر جي پيروي ڪندا آهن. ساڄي طرف منتقل ڪيو ويو. تنهن ڪري، جيڪڏهن اسان وٽ صف ۾ 5 عنصر آهن، ۽ اسان کي سيل نمبر 2 ۾ هڪ عنصر داخل ڪرڻ جي ضرورت آهي (جيڪو ٽيون هڪ آهي)، پوء 0 ۽ 1 صف عناصر پنهنجي جاء تي رهندا، هڪ نئون عنصر سيل 2 ۾ ظاهر ٿئي ٿو، ۽ ان جو اڳوڻو ٽين سيل ڏانهن وڃي ٿو وغيره.

جاوا لسٽ مثال (Arraylist realization)


import java.util.*;

public class ArrayListExample2 {
   public static void main(String[] args) {
       List<String> myFriendsList = new ArrayList();
       //we created list of some objects 
       System.out.println( "the size of myList before init = " + myFriendsList.size());
       myFriendsList.add("Alex");
       myFriendsList.add("Tanya");
       myFriendsList.add("Veloxy");
       myFriendsList.add("Alex");
       myFriendsList.add("Andrew");
       System.out.println(myFriendsList);
       System.out.println( "the size of myList after init = " + myFriendsList.size());

       myFriendsList.add("Ihor");
       System.out.println(myFriendsList);
       System.out.println("the size of my list = " +  myFriendsList.size());


       //here the program will print out the first appearance of "Alex" element
       System.out.println(myFriendsList.indexOf("Alex"));
       //program will print out the first appearance of "Alex" element starting from the element 0

       myFriendsList.remove(3);
       System.out.println(myFriendsList.get(3));
       System.out.println("after removing one of Alex's there is only one Alex: " + myFriendsList);
       System.out.println(myFriendsList.get(1));



       myFriendsList.clear();
       System.out.println("the size of the vector after clear method = " +  myFriendsList.size());

   }
}
هتي هن پروگرام جي پيداوار آهي:
init = 0 [Alex, Tanya, Veloxy, Alex, Andrew] کان اڳ myList جي سائيز init = 5 [Alex, Tanya, Veloxy, Alex, Andrew, Ihor] منهنجي لسٽ جي ماپ = 6 0 اينڊريو کان پوءِ. ايلڪس مان هڪ کي هٽائڻ سان صرف هڪ Alex آهي: [Alex, Tanya, Veloxy, Andrew, Ihor] تانيا ویکٹر جي ماپ واضح طريقي کان پوءِ = 0 عمل ختم ٿيڻ کان پوءِ نڪرڻ واري ڪوڊ 0 سان

ڪيئن LinkedList ڪم

هڪ LinkedList ۾، عناصر اصل ۾ ساڳئي زنجير ۾ ڳنڍيل آهن. هر عنصر، ڊيٽا جي اضافي ۾، ان کي ذخيرو ڪري ٿو، پوئين ۽ ايندڙ عنصر سان ڳنڍيل آهي. اهي لنڪ توهان کي هڪ عنصر کان ٻئي ڏانهن نيويگيٽ ڪرڻ جي اجازت ڏين ٿا. آئيٽرٽر ٻنهي طرفن ۾ ٽرورسل کي سپورٽ ڪري ٿو. لسٽ جي شروعات، وچ ۽ آخر ۾ حاصل ڪرڻ، ختم ڪرڻ، ۽ داخل ڪرڻ جا طريقا لاڳو ڪريو. توهان کي اجازت ڏئي ٿو ته ڪنهن به عنصر شامل ڪرڻ جي null سميت. LinkedList ٻن انٽرفيس کي لاڳو ڪري ٿو - نه رڳو لسٽ، پر ڊيڪ پڻ. هي ڪنهن به عناصر کان هڪ طرفي قطار ٺاهڻ جي صلاحيت مهيا ڪري ٿو، حتي null. ڳنڍيل لسٽ ۾ رکيل هر شئي هڪ نوڊ (نوڊ) آهي. هر نوڊ ۾ هڪ عنصر، پوئين ۽ ايندڙ نوڊ جي لنڪ شامل آهي. حقيقت ۾، ڳنڍيل فهرست نوڊس جي ھڪڙي ترتيب تي مشتمل آھي، جن مان ھر ھڪڙي ھڪڙي قسم جي ھڪڙي شيء کي ذخيرو ڪرڻ لاء ٺاھيو ويو آھي جنھن جي وضاحت ڪئي وئي آھي جڏھن اھو ٺاھيو ويو.

ڪوڊ جو مثال


import java.util.*;
public class LinkedListTest {

       public static void main(String args[]){

           List myLinkedList= new LinkedList<Integer>();
           myLinkedList.add(1);
           myLinkedList.add(2);
           myLinkedList.add(4);
           System.out.println("three added elements: " + myLinkedList);
           myLinkedList.add(5);
           myLinkedList.remove(1);
           System.out.println(myLinkedList);
           myLinkedList.size(); //3
           
           //add new element at the specified position:
           myLinkedList.add(2,7);
           System.out.println(myLinkedList);
                }
       }
پيداوار هتي آهي:
ٽي شامل ڪيل عناصر: [1، 2، 4] [1، 4، 5] [1، 4، 7، 5]

ویکٹر ڪوڊ جو مثال

ویکٹر پڻ هڪ متحرڪ صف جي حقيقت آهي ۽ تمام گهڻو ملندڙ آهي ArrayList، پر هم وقت سازي ۽ ڪجهه ورثي طريقا آهن جيڪي گڏ ڪرڻ واري فريم ورڪ تي مشتمل نه آهن. هتي هن طبقي جي استعمال جو هڪ سادي مثال آهي.

import java.util.Vector;

public class VectorExample1 {

   public static void main(String[] args) {
       Vector vector = new Vector();
       System.out.println("the size of the empty vector = " +  vector.size());
       vector.add("Alex");
       vector.add("Tanya");
       vector.add("Andrew");
       System.out.println(vector);
       vector.add("Alex");
       vector.add("Ihor");
       System.out.println(vector);
       System.out.println("the size of the vector = " +  vector.size());
       System.out.println("the first element of the vector = " + vector.firstElement());

       //here the program will print out the first appearance of "Johnny" element
       System.out.println(vector.indexOf("Andrew"));
       //program will print out the first appearance of "Johnny" element starting from the element 1
       System.out.println(vector.indexOf("Alex", 1));
       System.out.println(vector);
       vector.clear();
       System.out.println("the size of the vector after clear method = " +  vector.size());

   }
}
پيداوار آهي:
خالي ویکٹر جي ماپ = 0 [Alex, Tanya, Andrew] [Alex, Tanya, Andrew, Alex, Ihor] ویکٹر جي ماپ = 5 ویکٹر جو پهريون عنصر = Alex 2 3 [Alex, Tanya, Andrew, Alex, Ihor] ویکٹر جي ماپ کان پوء واضح طريقي سان = 0 پروسيس ختم ٿيڻ کان پوء نڪرڻ واري ڪوڊ 0 سان

جاوا اسٽيڪ ڪلاس ڪوڊ مثال


import java.util.Stack;

public class StackTest {
   public static void main(String[] args) {
       Stack stack = new Stack();
       System.out.println(stack.isEmpty());
       stack.add("Paul");
       stack.add("Johnny");
       stack.add("Alex");
       System.out.println(stack.isEmpty());
       stack.push("Andrew");
       System.out.println(stack);
       stack.pop();
       System.out.println(stack);
   }
}
اسٽيڪ ۾ نه رڳو شامل () ۽ هٽايو () طريقا آهن پر پش ۽ پاپ پڻ آهن، اهي اهڙي ڊيٽا جي جوڙجڪ لاءِ ڪلاسيڪل آهن. اسٽيڪ قاعدي جي فرمانبرداري ڪري ٿو "پهرين اندر، آخري ٻاهر" - هي هڪ اهڙي مخالف قطار آهي. تنهن ڪري، پاپ آپريشن ان عنصر کي پاپ ڪري ٿو جيڪو آخري ڀيرو اسٽيڪ تي رکيل هو. هتي اسان جي مثال جي پيداوار آهي:
سچو ڪوڙ [پال، جاني، ايلڪس، اينڊريو] [پال، جاني، ايلڪس]
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION