جاوا میں میٹرکس / 2D سرنی کیا ہے؟

"ایک میٹرکس نمبروں کا مجموعہ ہے جو قطاروں اور کالموں کی ایک مقررہ تعداد میں ترتیب دیا گیا ہے۔" عام طور پر یہ حقیقی نمبر ہوتے ہیں۔ عام طور پر، میٹرکس پیچیدہ اعداد پر مشتمل ہو سکتا ہے لیکن سادگی کی خاطر ہم یہاں صرف پورے نمبر استعمال کریں گے۔ آئیے ایک نظر ڈالتے ہیں کہ میٹرکس کیسا لگتا ہے۔ یہاں 4 قطاروں اور 4 کالموں کے ساتھ میٹرکس کی ایک مثال ہے۔جاوا میں میٹرکس - 2D Arrays - 2
تصویر 1: ایک سادہ 4x4 میٹرکس
جاوا میں اس میٹرکس کی نمائندگی کرنے کے لیے، ہم 2 جہتی صف استعمال کر سکتے ہیں۔ ایک 2D ارے 2 طول و عرض لیتا ہے، ایک قطار کے لیے اور ایک کالم کے لیے۔ مثال کے طور پر، اگر آپ انٹیجر سرنی int arr[4][4] بتاتے ہیں تو اس کا مطلب ہے کہ میٹرکس میں 4 قطاریں اور 4 کالم ہوں گے۔ یا آپ کہہ سکتے ہیں کہ ہر قطار کے لیے 4 کالم ہوں گے۔ ایک میٹرکس میں سیلز کی کل سائز / تعداد قطار* کالم = mxn = 4x4 = 16 ہوگی۔جاوا میں میٹرکس - 2D Arrays - 3
تصویر 2: تصویر 1 میں میٹرکس[4][4] کو جاوا میں 2D اری کے طور پر دکھایا گیا ہے۔

2D صف کا اعلان کریں اور شروع کریں۔

یہاں کچھ مختلف طریقے ہیں یا تو صرف صف کے سائز کا اعلان کریں، یا سائز کا ذکر کیے بغیر اسے شروع کریں۔
public class Matrices {

	public static void main(String[] args) {

		// declare & initialize 2D arrays for int and string
		int[][] matrix1 = new int[2][2];
		int matrix2[][] = new int[2][3];

           //the size of matrix3 will be 4x4
		int[][] matrix3 = { { 3, 2, 1, 7 },
					   { 9, 11, 5, 4 },
					   { 6, 0, 13, 17 },
					   { 7, 21, 14, 15 } };

		String[][] matrix4 = new String[2][2];

           //the size of matrix5 will be 2x3
           // 3 cols because at max there are 3 columns
		String[][] matrix5 = { { "a", "lion", "meo" },
				            { "jaguar", "hunt" } };
	}
}

2D Array Traversal

ہم سب جانتے ہیں کہ جاوا میں باقاعدہ صفوں کو کیسے عبور کرنا ہے۔ 2D arrays کے لیے یہ مشکل بھی نہیں ہے۔ اس کے لیے ہم عام طور پر نیسٹڈ 'فور' لوپس استعمال کرتے ہیں۔ کچھ ابتدائی افراد اسے کچھ اجنبی تصور کے طور پر سوچ سکتے ہیں، لیکن جیسے ہی آپ اس کی گہرائی میں جائیں گے آپ اسے کچھ مشق کے ساتھ نافذ کرنے کے قابل ہو جائیں گے۔ مندرجہ ذیل ٹکڑوں پر ایک نظر ڈالیں۔ یہ صرف آپ کی مکمل تفہیم کے لیے ہر قطار کے مطابق کالموں کی تعداد دکھاتا ہے۔
public class MatrixTraversal {
	public static void main(String[] args) {

	    int[][] matrix = new int[4][4];
	    for (int i = 0; i < matrix.length; i++)
	    {
		 // length returns number of rows
		 System.out.print("row " + i + " : ");
		 for (int j = 0; j < matrix[i].length; j++)
		 {
		    // here length returns # of columns corresponding to current row
		    System.out.print("col " + j + "  ");
		 }
	    System.out.println();
	   }
	}
}
آؤٹ پٹ
قطار 0 : کرنل 0 کرنل 1 کرنل 2 کرنل 3 قطار 1 : کرنل 0 کرنل 1 کرنل 2 کرنل 3 قطار 2 : کرنل 0 کرنل 1 کرنل 2 کرنل 3 قطار 3 : کرنل 0 کرنل 1 کرنل 2 کرنل 3

جاوا میں 2D سرنی کیسے پرنٹ کریں؟

2D Array traversal سے واقف ہونے کے بعد، آئیے جاوا میں 2D Arrays کو پرنٹ کرنے کے چند طریقے دیکھیں۔

Nested "for" لوپ کا استعمال

یہ جاوا میں میٹرکس پرنٹ کرنے کا سب سے بنیادی طریقہ ہے۔
public class MatrixTraversal {

    public static void printMatrix(int matrix[][])
    {
        for (int i = 0; i < matrix.length; i++)
	  {
	    // length returns number of rows
	    for (int j = 0; j < matrix[i].length; j++)
	    {
	      // here length returns number of columns corresponding to current row
		// using tabs for equal spaces, looks better aligned
		// matrix[i][j] will return each element placed at row ‘i',column 'j'
		System.out.print( matrix[i][j]  + "\t");
	     }
	     System.out.println();
	   }
	}

	public static void main(String[] args) {

		int[][] matrix = { { 3, 2, 1, 7 },
					 { 9, 11, 5, 4 },
					 { 6, 0, 13, 17 },
					 { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
آؤٹ پٹ
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

"ہر ایک کے لیے" لوپ کا استعمال

" فوریچ لوپ " کا استعمال کرتے ہوئے جاوا میں 2D اریوں کو پرنٹ کرنے کا ایک اور طریقہ یہ ہے ۔ یہ جاوا کی طرف سے فراہم کردہ ایک خاص قسم کا لوپ ہے، جہاں int[]رو میٹرکس میں ہر قطار سے گزرے گی۔ جبکہ، متغیر "عنصر" ہر عنصر پر مشتمل ہوگا جو قطار کے ذریعے کالم انڈیکس میں رکھا گیا ہے۔
public class MatrixTraversal {

	public static void printMatrix(int matrix[][]){
		for (int [] row : matrix)
		{
			// traverses through number of rows
			for (int element : row)
			{
				// 'element' has current element of row index
				System.out.print( element  + "\t");
			}
			System.out.println();
		}
	}

	public static void main(String[] args) {

		int[][] matrix = {  { 3, 2, 1, 7 },
					  { 9, 11, 5, 4 },
					  { 6, 0, 13, 17 },
					  { 7, 21, 14, 15 } };
		printMatrix(matrix);
	}
}
آؤٹ پٹ
3 2 1 7 9 11 5 4 6 0 13 17 7 21 14 15

"Arays.toString()" طریقہ استعمال کرنا

جاوا میں Arrays.toString() طریقہ، اس کو پاس کردہ ہر پیرامیٹر کو ایک ہی صف کے طور پر تبدیل کرتا ہے اور اسے پرنٹ کرنے کے لیے اس کا بلٹ ان طریقہ استعمال کرتا ہے۔ ہم نے ارد گرد کھیلنے کے لیے ایک ڈمی سٹرنگ 2D سرنی بنائی ہے۔ یہی طریقہ عددی صفوں کے لیے بھی کام کرتا ہے۔ ہم آپ کو اپنی ورزش کے لیے اس پر عمل کرنے کی ترغیب دیتے ہیں۔
import java.util.Arrays;
public class MatrixTraversal {
	public static void printMatrix(String matrix[][]){

		for (String[] row : matrix) {
			// convert each row to a String before printing
			System.out.println(Arrays.toString(row));
		}
	}

	public static void main(String[] args) {

		String [][] matrix = {  { "Hi, I am Karen" },
						{ "I'm new to Java"},
						{ "I love swimming" },
						{ "sometimes I play keyboard"} };
		printMatrix(matrix);
	}
}
آؤٹ پٹ
[ہیلو، میں کیرن ہوں] [میں جاوا میں نیا ہوں] [مجھے تیراکی پسند ہے] [کبھی کبھی میں کی بورڈ چلاتا ہوں]

کوڈ کی وضاحت

پہلی تکرار میں، String[]row ایک ارے کے طور پر "Hi, I am Karen" پڑھے گی ، اسے String میں تبدیل کریں اور پھر پرنٹ کریں۔ اس طرح تمام تکراریں رونما ہوں گی۔ یہاں فراہم کردہ افادیت یہ ہے کہ آپ کو کسی بھی اشاریہ جات (i، j) یا نیسٹڈ لوپس پر نظر رکھنے کی ضرورت نہیں ہے۔

نتیجہ

جاوا میں 2D Arrays کثیر جہتی صفوں میں سب سے آسان ہیں۔ اس مضمون کے اختتام تک ہم امید کرتے ہیں کہ آپ انہیں استعمال کرنے سے نہیں ڈریں گے، بلکہ کسی سنجیدہ کام کے لیے اپنی آستینیں چڑھانے کے لیے تیار ہیں۔ آپ اپنی سہولت کے مطابق ان تمام نمونہ کوڈز کو چلا سکتے ہیں یا لائن کو ڈیبگ کر سکتے ہیں۔ لیکن آخر میں، ہم (ہمیشہ کی طرح) مشورہ دینا چاہیں گے کہ مہارت بڑی مشق اور صبر کے ساتھ آتی ہے۔ امید ہے کہ آپ کو جاوا میں 2D Arrays کے ساتھ سیکھنے کا مزہ تجربہ ہوگا۔ اچھی قسمت!