"नमस्ते, मेरे सबसे होशियार छात्र!"
"नमस्कार, ऋषि!"
"क्या आप सरणियों के बारे में एक नई चर्चा के लिए तड़प रहे हैं? खैर, आज हमारे पास आपके लिए एक है! आज मैं आपको दांतेदार और बहुआयामी सरणियों के बारे में बताने जा रहा हूँ।"
"खून का प्यासा और भयावह लगता है।"
"चिंता न करें, एक वास्तविक प्रोग्रामर हमेशा एक सरणी को संभाल सकता है, तब भी जब वह अपने दांतों को काटता है। एक मजाक को अलग करता है, एक सरणी की दांतेदारता न केवल एक द्वि-आयामी सरणी की पंक्तियों को स्वैप करने की क्षमता को दर्शाती है, बल्कि एक सरणी का निर्माण भी करती है। हालाँकि यह होना आवश्यक है।
"मान लीजिए कि आप चाहते हैं कि द्वि-आयामी सरणी की पहली पंक्ति की लंबाई 10 हो, और दूसरी 50 हो।"
"क्या तुम सच में ऐसा कर सकते हो?"
"बिल्कुल! सबसे पहले, हम 'कंटेनर का कंटेनर' बनाते हैं - यह पहली सरणी है, जो पंक्तियों के सरणी के संदर्भों को संग्रहीत करेगी। यह इस प्रकार किया जाता है:
int[][] name = new int[height][];
"आप केवल दूसरे आयाम को छोड़ देते हैं , और जावा मशीन कंटेनरों का एक कंटेनर बनाती है। इस कोड को निष्पादित करने के बाद स्मृति में यही होगा:
"और, ठीक है, आप पहले से ही जानते हैं कि एक-आयामी सरणी कैसे बनाएं 🙂
परिणामी कोड इस तरह दिखेगा:
|
द्वि-आयामी सरणी शून्य पंक्ति 10 तत्वों की एक सरणी है पहली पंक्ति 50 तत्वों की एक सरणी है |
"हमने अभी एक तथाकथित "दांतेदार" सरणी बनाई है। इसके किनारे खुरदरे और अनियमित हैं।
"और अगर हम अब इस सरणी के सभी तत्वों को स्क्रीन पर प्रदर्शित करना चाहते हैं, तो सरणी का length
सरणी काम में आएगा: आखिरकार, सरणी की पंक्तियों की लंबाई अलग-अलग होती है।
"वैसे, क्या आप मुझे बता सकते हैं कि हमारे उदाहरण में 'कंटेनर के कंटेनर' की लंबाई कैसे पता करें? यह एक सरणी वस्तु भी है, जिसका अर्थ है कि इसकी लंबाई है।"
"शायद matrix.length
?"
"बिल्कुल सही! और उन सरणियों के लिए जो पंक्तियाँ बनाती हैं, हम matrix[0].length
शून्य पंक्ति के लिए उपयोग करेंगे।"
"और पहले के लिए, इसका मतलब है कि हम प्रयोग करेंगे matrix[1].length
?"
"बिल्कुल सही। पहले मामले में, कमांड को क्रियान्वित करने पर 10 मिलेंगे, और दूसरे मामले में, परिणाम 50 होगा।
द्वि-आयामी सरणी के साथ कार्य करना
"अब एक द्वि-आयामी सरणी प्रदर्शित करने का प्रयास करें:
|
एक सरणी बनाएँ सरणी को उन मानों से भरें बाहरी लूप जो सरणी की पंक्तियों पर पुनरावृति करता है। आंतरिक लूप जो एकल पंक्ति की कोशिकाओं पर पुनरावृति करता है। |
"जैसा कि आप देख सकते हैं, हमें दो नेस्टेड लूप की आवश्यकता है। पहले को हम आउटर कहते हैं, और दूसरा - इनर ।
"बाहरी पाश ( i
चर) में, हम क्रमिक रूप से उन सभी पंक्तियों (सरणियों) से गुजरते हैं जो हमारी द्वि-आयामी सरणी बनाती हैं। का प्रत्येक मान i
उस अनुक्रमणिका के साथ एक पंक्ति से मेल खाता है।
"आंतरिक लूप ( j
चर) में, हम पंक्तियों में सभी कोशिकाओं पर पुनरावृति करते हैं। आंतरिक लूप के लिए धन्यवाद, एक पंक्ति, जिसमें एक-आयामी सरणी के मान होते हैं, स्क्रीन पर प्रदर्शित की जाएगी।
"यह वही है जो प्रदर्शित किया जाएगा:
सरणी की एक पंक्ति संसाधित होती है | 1 2 3 4 5 6 |
सरणी की दो पंक्तियों को संसाधित किया जाता है | 1 2 3 4 5 6 |
सरणी की तीन पंक्तियों को संसाधित किया जाता है | 1 2 3 4 5 6 |
बहुआयामी सरणियाँ
"अमीगो! क्या आपने अनुमान लगाया कि यदि द्वि-आयामी सरणियाँ हैं, तो त्रि-आयामी सरणियाँ भी हो सकती हैं?
"मैं बस उसी के बारे में सोच रहा था, लेकिन पूछने में शर्मिंदगी महसूस कर रहा था।
"हां, आप एक त्रि-आयामी सरणी बना सकते हैं, और सामान्य रूप से, किसी भी आयाम की एक सरणी बना सकते हैं। ऐसी सरणी को 'बहुआयामी' कहा जाता है। बस मनोरंजन के लिए, चलिए एक बहुआयामी सरणी बनाते हैं जिसमें 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
}
}
"और वह सिर्फ एक सरणी बना रहा है! फिर आपको इसके साथ किसी तरह काम करने की भी जरूरत है।"
"मैंने जो कहा, मैं उसे वापस लेता हूं। उनके साथ काम करना इतना आसान नहीं है। लेकिन यह संभव है।"
"चूंकि यह संभव है, यहां एक बोनस कार्य है। कोड लिखें जो सभी मानों को त्रि-आयामी सरणी में प्रदर्शित करता है। आप ऐसा करने के लिए पर्याप्त जानते हैं। मुख्य बात धैर्य और चौकस रहना है। या शायद साधन संपन्न होना (एक गुप्त बिट है) ज्ञान का जो आपको इस कार्य को एक पंक्ति में हल करने में मदद करेगा)। लेकिन कोई फर्क नहीं पड़ता कि आप इसे कैसे हल करते हैं, इसे हल करें।
"धन्यवाद, ऋषि। मैं कोशिश करूँगा।"
GO TO FULL VERSION