JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ arrays بابت ڪجھ

جاوا ۾ arrays بابت ڪجھ

گروپ ۾ شايع ٿيل
سلام! اڳي، ٽريننگ دوران، اسان ھڪڙي شين سان گڏ ڪم ڪيو (يا ابتدائي قسمن). پر ڇا جيڪڏهن اسان کي هڪ اعتراض سان ڪم ڪرڻ جي ضرورت ناهي، پر هڪ سڄي گروهه سان؟ مثال طور، اسان اسان جي ڪمپني ۾ سڀني ملازمن جي جنم ڏينهن جي فهرست ٺاهڻ چاهيون ٿا. ان تي مشتمل هجڻ گهرجي، چئو، فارميٽ ۾ 30 لائينون: "اينڊري پيٽروف، جنوري 25." هڪ خاص ڊيٽا جي جوڙجڪ، هڪ صف، هتي اسان جي مدد ڪندي. جيڪڏهن توهان صفن کي حقيقي زندگيءَ جي شين سان ڀيٽيو ٿا، ته ان جي جوڙجڪ هڪ بئنڪ والٽ جي سيلز سان تمام گهڻي مشابهت رکي ٿي: جاوا ۾ صفن بابت ڪجهه - 1صف پڻ سيلن تي مشتمل آهي. توهان هر سيل ۾ ڪجهه وجهي سگهو ٿا. انهي حالت ۾، مواد تائين رسائي حاصل ڪرڻ لاء توهان کي سيل نمبر ڄاڻڻ جي ضرورت آهي. صف هن طرح ٺهيل آهي:
public class Main {

   public static void main(String[] args) {

       String [] birthdays = new String[10]; // array of Java strings

   }
}
هتي اسان 10 سيلن جو هڪ صف ٺاهيو آهي. توهان فوري طور تي صف جي ڪجهه خاصيتن تي ڌيان ڏئي سگهو ٿا:
  1. اهو هڪ سخت بيان ڪيل قسم جي ڊيٽا کي محفوظ ڪري ٿو. جيڪڏهن اسان شروعات ۾ هڪ string array ٺاهي String، اسان ان ۾ ٻيو ڪجهه به ذخيرو ڪرڻ جي قابل نه هوندا. ڊيٽا جو قسم بيان ڪيو ويو آھي جڏھن صف ٺاھيو. اھو اھو آھي جيڪو ان کي محفوظ ذخيرو خاني کان ڌار ڪري ٿو، جنھن ۾ ڪلائنٽ جيڪو گھري سو ذخيرو ڪري سگھي ٿو.
  2. هڪ سري بنيادي قسم جي ڊيٽا کي ذخيرو ڪري سگھي ٿو (مثال طور، int)، اسٽرنگ ( String)، يا ساڳي طبقي جي شين. وڌيڪ واضح طور تي، نه ته شيون پاڻ کي، پر انهن شين سان ڳنڍيل آهن.
  3. سر جي سائيز کي ٺاھڻ دوران بيان ڪيو وڃي. توھان ان کي بعد ۾ بيان ڪرڻ يا ٺاھڻ کان پوءِ ان جو سائز تبديل ڪرڻ جي قابل نه ھوندا.
[]جاوا ظاهر ڪري ٿو ته ايڪسپريس جي ٻنهي پاسن تي اسڪوائر بریکٹ استعمال ڪندي هڪ صف ٺاهي پئي وڃي . اهي بيان ڪري سگھجن ٿا ريفرنس متغير جي نالي کان اڳ يا بعد ۾ - اهو ڪم ڪندو ڪنهن به طرح:
//Java arrays of strings, two syntaxes
String [] birthdays = new String[10];
String birthdays [] = new String[10];
جيڪڏهن توهان هڪ صف ۾ ڪجهه لکڻ چاهيو ٿا، توهان کي سيل جو تعداد بيان ڪرڻو پوندو جنهن ۾ قيمت لکيو ويندو. صفن جا سيل نمبر 0 کان شروع ٿين ٿا. صفر کان شروع ڪرڻ پروگرامنگ ۾ عام رواج آھي. جيترو جلدي توهان ان کي استعمال ڪيو، بهتر :) اهو آهي، جيڪڏهن توهان صف جيجاوا ۾ صفن بابت ڪجهه - 2 پهرين سيل ۾ ڪجهه قدر رکڻ چاهيو ٿا ، اهو هن طرح ڪيو ويندو آهي:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
   }
}
هاڻي اسان جي صف جو پهريون سيل، جنهن ۾ ساٿين جي جنم ڏينهن تي مشتمل آهي، لينا جي سالگره سان گڏ هڪ تار آهي. قياس سان، توھان ٻين قدر شامل ڪري سگھو ٿا:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
       birthdays[1] = "Kolya Romanov, May 18";
       birthdays[7] = "Olesya Ostapenko, January 3";
   }
}
مهرباني ڪري نوٽ ڪريو: اسان Olesya جي سالگره کي اٺين سيل ۾ شامل ڪيو (ڇا توهان وساري ڇڏيو آهي ته سيل نمبر 7 اٺين ڇو آهي؟). جيتوڻيڪ ٻيا سڀئي سيل ڀرجي نه ويا آهن. اهو ضروري ناهي ته قدرن کي ترتيب ۾ ترتيب ۾ لکجي - اهڙي ڪا به پابندي ناهي. ٻئي طرف، جيڪڏهن توهان ترتيب سان لکندا آهيو، اهو تمام آسان ٿي ويندو ته آزاد ۽ قبضي ڪيل سيلن جي تعداد کي ٽريڪ ڪرڻ لاء، ۽ صف ۾ ڪو به "سوراخ" باقي نه هوندو. جيڪڏهن توهان حاصل ڪرڻ چاهيو ٿا هڪ صف سيل جو مواد، جيئن بئنڪ سيل جي صورت ۾، توهان کي ان جو نمبر ڄاڻڻ جي ضرورت آهي. اهو هن طرح ڪيو ويندو آهي:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
       birthdays[1] = "Kolya Romanov, May 18";
       birthdays[7] = "Olesya Ostapenko, January 3";

       String olesyaBirthday = birthdays[7];
       System.out.println(olesyaBirthday);
   }
}
ڪنسول آئوٽ:

Олеся Остапенко, 3 января
اسان هڪ variable ٺاهيو String۽ مرتب ڪندڙ کي ٻڌايو: "سيل کي ڳوليو انڊيڪس 7 سان صف ۾ birthdays۽ اتي رکيل قيمت کي متغير کي تفويض ڪريو String olesyaBirthday." بلڪل ائين ئي ڪيائين.

جاوا صف جي ڊيگهه

جڏهن هڪ صف سان ڪم ڪري رهيا آهيو، توهان آساني سان ڳولي سگهو ٿا ان جي ڊيگهه هڪ خاص ملڪيت استعمال ڪندي - length.
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
       birthdays[1] = "Kolya Romanov, May 18";
       birthdays[7] = "Olesya Ostapenko, January 3";

       int birthdaysLength = birthdays.length;
       System.out.println(birthdaysLength);
   }
}
ڪنسول آئوٽ:

10
نوٽ:ملڪيت lengthصف جي سائيز کي محفوظ ڪري ٿو، نه ڀريو سيلن جو تعداد. اسان جي صف صرف 3 قدرن کي ذخيرو ڪري ٿي، پر جڏھن اسان ان کي ٺاھيو، اسان ان لاء سائز = 10 بيان ڪيو آھي، اھو اھو آھي جيڪو فيلڊ موٽائي ٿو length. اهو ڇو مفيد ٿي سگهي ٿو؟ خير، مثال طور، جيڪڏهن توهان ڪنسول ۾ سڀني جنم ڏينهن جي فهرست پرنٽ ڪرڻ چاهيو ٿا (پڙهڻ لاءِ ته ڪو به وساري نه ويو آهي)، توهان اهو ڪري سگهو ٿا هڪ سادي لوپ ۾:
public class Main {

   public static void main(String[] args) {

       String birthdays [] = new String[10];
       birthdays[0] = "Lena Eliseeva, March 12";
       birthdays[1] = "Kolya Romanov, May 18";
       birthdays[2] = "Vika Ignatova, July 12";
       birthdays[3] = "Denis Kozlov, September 7";
       birthdays[4] = "Maxim Maslennikov, November 9";
       birthdays[5] = "Roman Baranov, August 14";
       birthdays[6] = "Valery Pyatkina, April 1";
       birthdays[7] = "Olesya Ostapenko, January 3";
       birthdays[8] = "Kostya Gurko, October 19";
       birthdays[9] = "Seryozha Naumov, May 3";

       for (int i = 0; i < birthdays.length; i++) {
           System.out.println(birthdays[i]);
       }
   }
}
لوپ ۾ اسان ھڪڙو متغير ٺاھيو آھي iجيڪو شروعاتي طور تي صفر جي برابر آھي. هر پاس تي، اسان پنهنجي صف مان انڊيڪس i سان سيل وٺون ٿا ۽ ان جي قيمت ڪنسول ڏانهن پرنٽ ڪريو. لوپ 10 ورجائي ڪندو، ۽ i جو قدر 0 کان 9 تائين وڌندو - صرف اسان جي صف جي سيلن جي اشارن جي مطابق! birthdays[0]اهڙيءَ طرح اسان ڪنسول کان وٺي ڪنسول تائين سڀ ويلز پرنٽ ڪنداسين birthdays[9] . حقيقت ۾، مختلف طريقن سان ترتيب ڏيڻ جا طريقا آهن. مثال طور، انگن جو هڪ صف intهن طرح ٺاهي سگهجي ٿو:
public class Main {

   public static void main(String[] args) {
       int numbers [] = {7, 12, 8, 4, 33, 79, 1, 16, 2};
   }
}
هن طريقي کي "تيز شروعات" سڏيو ويندو آهي. اهو ڪافي آسان آهي ته اسان فوري طور تي هڪ صف ٺاهي ۽ ان کي قدر سان ڀريو. صف جي سائيز کي واضع طور تي بيان ڪرڻ جي ڪا ضرورت ناهي - فيلڊ lengthجلدي شروعات دوران خودڪار طور تي ڀريو ويندو.
public class Main {

   public static void main(String[] args) {
       int numbers [] = {7, 12, 8, 4, 33, 79, 1, 16, 2};
       System.out.println(numbers.length);
   }
}
ڪنسول آئوٽ:

9

Java Object Array

توهان اڳ ۾ ئي ٻڌو آهي ته شين جون صفون ۽ primitives جون صفون مختلف طريقي سان ميموري ۾ محفوظ ڪيون وينديون آهن. اچو ته وٺو، مثال طور، ٽن شين جو هڪ صف Cat:
public class Cat {

   private String name;

   public Cat(String name) {
       this.name = name;
   }

   public static void main(String[] args) {

       Cat[] cats = new Cat[3];
       cats[0] = new Cat("Thomas");
       cats[1] = new Cat("Hippopotamus");
       cats[2] = new Cat("Philip Markovich");
   }
}
هتي سمجھڻ لاء ڪجھ شيون آهن:
  1. primitives جي صورت ۾، Java arrays ڪيترن ئي مخصوص قدرن کي ذخيرو ڪري ٿو (جهڙوڪ نمبر int). شين جي صورت ۾، هڪ صف ڪيترن ئي حوالن کي محفوظ ڪري ٿو. صف catsٽن سيلن تي مشتمل آهي، جن مان هر هڪ اعتراض تي مشتمل آهي Cat. هر هڪ لنڪ ميموري ۾ هڪ پتي ڏانهن اشارو ڪري ٿو جتي اهو اعتراض ذخيرو ٿيل آهي.
  2. آري عناصر ھڪڙي بلاڪ ۾ ميموري ۾ ذخيرو ٿيل آھن. اهو انهن کي وڌيڪ موثر ۽ جلدي رسائي لاء ڪيو ويو آهي. اهڙيء طرح، لنڪ catsميموري ۾ هڪ بلاڪ ڏانهن اشارو ڪري ٿو جتي سڀئي شيون - صف جا عناصر - محفوظ ٿيل آهن. A cats[0]- هن بلاڪ جي اندر هڪ مخصوص ايڊريس تي.
جاوا ۾ صفن بابت ڪجهه - 3اهو سمجهڻ ضروري آهي ته هڪ صف نه رڳو شيون ذخيرو ڪري سگهي ٿي، اهو پاڻ هڪ اعتراض آهي.

صفن جي صف يا ٻه طرفي صف

ان جي بنياد تي، اسان کي سوال سان منهن ڏيڻو پوي ٿو - ڇا اسان ٺاهي سگهون ٿا، مثال طور، تارن يا انگن جي هڪ صف نه، پر صفن جي هڪ صف؟ ۽ جواب ٿيندو - ها، اسان ڪري سگهون ٿا! هڪ صف ان جي اندر ڪنهن به شين کي ذخيرو ڪري سگهي ٿي، بشمول ٻين صفن سميت. اهڙي صف کي ٻه طرفي سڏيو ويندو. جيڪڏهن توهان ان کي تصوير ۾ ظاهر ڪريو ٿا، اهو هڪ باقاعده ٽيبل وانگر تمام گهڻو نظر ايندو. مثال طور، اسان هڪ سري ٺاهڻ چاهيون ٿا جيڪو int10 سيلن سان گڏ نمبرن جي 3 صفن کي ذخيرو ڪندو. اهو هن طرح نظر ايندو: جاوا ۾ صفن بابت ڪجهه - 4هر لڪير انگن جي هڪ صف جي نمائندگي ڪري ٿو int. پهرين صف ۾ 1 کان 10 تائين انگ شامل آهن، ٻيو -1 کان -10 تائين، ٽيون - بي ترتيب نمبرن جو هڪ سيٽ. انهن صفن مان هر هڪ اسان جي ٻه-dimensional صف جي سيل ۾ ذخيرو ٿيل آهي. ڪوڊ ۾ ٻه-dimensional صف شروع ڪرڻ هن طرح نظر اچي ٿو:
public static void main(String[] args) {
   Cat[][] cats = new Cat[3][5];
}
اسان جا ٻه-dimensional cats array 3 arrays جي 5 سيلن مان هر هڪ کي ذخيرو ڪري ٿو. جيڪڏهن اسان چاهيون ٿا ته پنهنجو اعتراض ٻئي صف جي ٽئين سيل ۾ رکون، اسان ان کي هن طرح ڪندا آهيون:
public static void main(String[] args) {
   Cat[][] cats = new Cat[3][5];
   cats[1][2] = new Cat("Fluff");
}
[1]ٻئي صف ڏانهن اشارو ڪري ٿو، ۽ [2]هن صف جي ٽئين سيل ڏانهن اشارو ڪري ٿو. جيئن ته هڪ ٻه-dimensional صف ڪيترن ئي صفن تي مشتمل آهي، ان کي ٽريڪ ڪرڻ ۽ سڀني قدرن کي پرنٽ ڪرڻ لاء ڪنسول ڏانهن (يا سڀني سيلن کي ڀريو)، اسان کي هڪ ڊبل، نسٽڊ لوپ جي ضرورت آهي:
for (int i = 0; i < cats.length; i++) {
   for (int j = 0; j < cats[i].length; j++) {
       System.out.println(cats[i][j]);
   }
}
ٻاهرئين لوپ (متغير i) ۾، اسان انهن سڀني صفن کي ڇڪيندا آهيون جيڪي اسان جي ٻه طرفي صف ٺاهيندا آهن. اندروني لوپ ۾ (متغير j) اسان هر صف جي سڀني سيلن ذريعي ٻيهر ورجائيندا آهيون. نتيجي طور، اعتراض cats[0][0](پهريون صف، پهريون سيل) پهريون ڀيرو ڪنسول تي ڏيکاريو ويندو، ۽ ٻيو اعتراض ٿيندو cats[0][1](پهريون صف، ٻيو سيل). جڏهن پهرين صف ختم ٿي ويندي آهي، , cats[1][0], cats[1][1]۽ cats[1][2]انهي تي آئوٽ ٿيندو. رستي جي ذريعي، تيز شروعات پڻ ٻه طرفي صفن لاء دستياب آهي:
int[][] numbers = {{1,2,3}, {4,5,6}, {7,8,9}};
عام طور تي، اسان هڪ ٻه-dimensional صف لکندا سين numbersجيئن int[3][3]، پر اهو طريقو اسان کي فوري طور تي قدر بيان ڪرڻ جي اجازت ڏئي ٿو. ڇو هڪ ٻه-dimensional صف جي ضرورت ٿي سگھي ٿو؟ خير، مثال طور، ان جي مدد سان توهان آساني سان مشهور راند “Battleship” کي ٻيهر ٺاهي سگهو ٿا: جاوا ۾ صفن بابت ڪجهه - 5“Battleship” ۾ راند جي ميدان جي جوڙجڪ اهڙي آهي ته ان کي آساني سان بيان ڪري سگهجي ٿو: 10 صفن جي هڪ ٻه طرفي صف، هر هڪ ۾ 10 سيل . توهان ٻه اهڙيون صفون ٺاهيندا آهيو - پنهنجي ۽ توهان جي مخالف لاءِ:
int [][] seaBattle = new int[10][10];
int [][] seaBattle2 = new int[10][10];
توهان ڪجهه قدرن سان ڀريو ٿا (مثال طور، انگن يا نشانين *) سيلز جنهن ۾ توهان جا جهاز واقع آهن، ۽ پوءِ توهان ۽ توهان جو مخالف موڙ وٺي سيل نمبرن کي ڪال ڪندي:
  • سامونڊي جنگ[6][5]!
  • ماضي! سامونڊي جنگ 2[6][6]!
  • زخمي!
  • سامونڊي جنگ 2[6][7]!
  • زخمي!
  • سامونڊي جنگ 2[6][8]!
  • مارجي ويو!

صفن بابت اضافي وسيلا

arrays بابت وڌيڪ ڄاڻڻ چاهيو ٿا؟ مهرباني ڪري هيٺ ڏنل مضمونن تي هڪ نظر وٺو. هن موضوع تي تمام دلچسپ ۽ مفيد معلومات آهي.
  1. جاوا ۾ Arrays - arrays بابت تفصيلي مضمون، انھن جي ٺاھڻ، شروعات ۽ استعمال. مثالن سان.
  2. Arrays ڪلاس ۽ ان جو استعمال - مضمون ڪلاس جا ڪجھ طريقا بيان ڪري ٿوArray
  3. Arrays پهريون JavaRush ليڪچر آهي جيڪو arrays لاءِ وقف ڪيو ويو آهي.
  4. ملٽي ڊائمينشنل آريز - مثالن سان گڏ ملٽي ڊيمانشنل اري بابت تفصيلي مضمون.
  5. صفر-لمبائي واري صف کي واپس ڏيو، خالي نه - اثرائتو پروگرامنگ ليکڪ جوشوا بلوچ ڳالهائي ٿو ته ڪيئن بهتر طور تي خالي صفن کي واپس ڪجي.
هي صفن سان اسان جي پهرين واقفيت کي ختم ڪري ٿو، پر اهو صرف انهن سان رابطي جي شروعات آهي. هيٺ ڏنل ليڪچرن ۾ اسان انهن کي استعمال ڪرڻ جا دلچسپ طريقا ڏسندا، ۽ اهو پڻ معلوم ڪنداسين ته جاوا وٽ ڪهڙيون بلٽ ان فنڪشن آهن جيڪي هن ڊيٽا جي جوڙجڪ سان وڌيڪ آسان ڪم ڪرڻ لاءِ آهن :)
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION