1. दांतेदार सरणियाँ

जावा प्रोग्रामर के रूप में आप न केवल द्वि-आयामी सरणी की पंक्तियों को स्वैप कर सकते हैं, बल्कि एक सरणी भी बना सकते हैं, जैसा आप चाहते हैं।

मान लें कि आप चाहते हैं कि द्वि-आयामी सरणी की पहली पंक्ति की लंबाई हो 10, और आप चाहते हैं कि दूसरी पंक्ति की लंबाई हो 50। क्या हम वह कर सकते हैं? हाँ हम कर सकते हैं।

सबसे पहले, हमें 'कंटेनर का कंटेनर' बनाने की आवश्यकता है - यह पहला एरे है, जो पंक्तियों के सरणियों के संदर्भों को संग्रहीत करेगा। इसे इस प्रकार किया जाता है:

int[][] name = new int[height][];

आप केवल दूसरे आयाम को छोड़ देते हैं , और जावा मशीन कंटेनरों का एक कंटेनर बनाती है। इस कोड को निष्पादित करने के बाद स्मृति में यही होगा:

जावा में दांतेदार सरणियाँ

और, ठीक है, आप पहले से ही जानते हैं कि एक-आयामी सरणी कैसे बनाएं 🙂

परिणामी कोड इस तरह दिखेगा:

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
द्वि-आयामी सरणी

शून्य पंक्ति 10तत्वों की एक सरणी है
पहली पंक्ति 50तत्वों की एक सरणी है

हमने अभी-अभी एक तथाकथित " दांतेदार सरणी " बनाई है।

और अगर हम अब इस सरणी के सभी तत्वों को स्क्रीन पर प्रदर्शित करना चाहते हैं, तो सरणी की lengthसंपत्ति काम आएगी: आखिरकार, सरणी की पंक्तियों की लंबाई अलग-अलग होती है।

वैसे, आप हमारे उदाहरण में 'कंटेनर के कंटेनर' की लंबाई कैसे पाते हैं? यह एक सरणी वस्तु भी है, जिसका अर्थ है कि इसकी लंबाई है। सही उत्तर है matrix.length

हमारी पंक्तियों में शामिल सरणी के बारे में कैसे?matrix[0].length



2. द्वि-आयामी सरणी के साथ कार्य करना

मान लीजिए आप एक द्वि-आयामी सरणी प्रदर्शित करना चाहते हैं। आप उसे कैसे करते हैं?

हमारा कोड कुछ इस तरह दिखेगा:

int[][] matrix = new int[3][];
matrix[0] = new int[]{1, 2, 3, 4, 5, 6};
matrix[1] = new int[]{1, 2, 3};
matrix[2] = new int[]{1};
for (int i = 0; i < matrix.length; i++) {
   for (int j = 0; j < matrix[i].length; j++)
      System.out.print( matrix[i][j] + " " );
   System.out.println();
}
एक सरणी बनाएं
सरणी को मानों के साथ भरें


बाहरी लूप जो सरणी की पंक्तियों पर पुनरावृत्त करता है।
आंतरिक लूप जो एकल पंक्ति की कोशिकाओं पर पुनरावृति करता है।

आपको दो नेस्टेड लूप चाहिए। पहले को हम बाहरी कहते हैं , और दूसरे को आंतरिक

बाहरी पाश ( iचर) में, हम क्रमिक रूप से उन सभी पंक्तियों (सरणियों) से गुजरते हैं जो हमारी द्वि-आयामी सरणी बनाती हैं। प्रत्येक मान iउस अनुक्रमणिका के साथ एक पंक्ति से मेल खाता है।

आंतरिक पाश ( jचर) में, हम पंक्तियों में सभी कोशिकाओं पर पुनरावृति करते हैं। आंतरिक पाश के लिए धन्यवाद, एक पंक्ति, जिसमें एक-आयामी सरणी के मान होते हैं, स्क्रीन पर प्रदर्शित होंगे।

यह प्रदर्शित किया जाएगा:

सरणी की एक पंक्ति संसाधित होती है
1 2 3 4 5 6
सरणी की दो पंक्तियों को संसाधित किया जाता है
1 2 3 4 5 6
1 2 3
सरणी की तीन पंक्तियों को संसाधित किया जाता है
1 2 3 4 5 6
1 2 3
1


3. बहुआयामी सरणियाँ

सरणियों के बारे में एक और दिलचस्प तथ्य, जिसका आप शायद पहले ही अनुमान लगा चुके हैं। यदि आप द्वि-आयामी सरणी बना सकते हैं, तो क्या आप त्रि-आयामी सरणी बना सकते हैं?

हां, आप किसी भी आयाम की एक सरणी बना सकते हैं। ऐसे सरणियों को 'बहुआयामी' कहा जाता है।

केवल मनोरंजन के लिए, चलिए एक बहुआयामी सरणी बनाते हैं जिसमें 4 आयाम होते हैं।

int[][][][] matrix = new int[2][3][4][5];

यह कोड बहुत आसान है, है ना?

क्या होगा यदि आप इसे मैन्युअल रूप से बनाते हैं?

int[][][][] matrix;
matrix = new int[2][][][];                // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];                // Create a 3-element array of references to references
  for (j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];             // Create a 4-element array of references
    for (k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];          // Create 5-element arrays of integers
  }
}

और वह सिर्फ सरणी बना रहा है! फिर आपको इसके साथ किसी तरह काम करने की भी जरूरत है।

बोनस कार्य: कोड लिखें जो सभी मानों को त्रि-आयामी सरणी में प्रदर्शित करता है।