"हॅलो, माझा सर्वात हुशार विद्यार्थी!"
"हॅलो, ऋषी!"
"तुम्ही अॅरेबद्दल नवीन चर्चेसाठी विचार करत आहात का? बरं, आज आम्ही तुमच्यासाठी एक आहे! आज मी तुम्हाला दातेदार आणि बहुआयामी अॅरेबद्दल सांगणार आहे."
"रक्तपिपासू आणि भयावह वाटतं."
"काळजी करू नका, खरा प्रोग्रामर दात असताना देखील अॅरे हाताळू शकतो. विनोद बाजूला ठेवून, अॅरेचा दाटपणा केवळ द्विमितीय अॅरेच्या पंक्ती बदलण्याची क्षमताच नाही तर अॅरे तयार करण्याची क्षमता देखील प्रतिबिंबित करतो. तथापि ते असणे आवश्यक आहे.
"आपल्याला द्विमितीय अॅरेच्या पहिल्या पंक्तीची लांबी 10 आणि दुसरी 50 हवी आहे असे समजा."
"तुम्ही ते खरोखर करू शकता?"
"नक्कीच! प्रथम, आम्ही 'कंटेनरचा कंटेनर' तयार करतो — हा पहिला अॅरे आहे, जो पंक्तींच्या अॅरेचे संदर्भ संग्रहित करेल. हे असे केले जाते:
int[][] name = new int[height][];
"तुम्ही फक्त दुसरे परिमाण वगळले , आणि Java मशीन कंटेनरचा कंटेनर तयार करते. हा कोड कार्यान्वित केल्यानंतर मेमरीमध्ये हेच असेल:

"आणि, बरं, तुम्हाला एक-आयामी अॅरे कसे तयार करायचे हे आधीच माहित आहे 🙂
परिणामी कोड असा दिसेल:
|
द्विमितीय अॅरे शून्या पंक्ती ही घटकांची अॅरे आहे पहिली पंक्ती ही घटकांची अॅरे आहे 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