"अमिगो, मला आशा आहे की आतापर्यंत तुम्हाला हे समजले असेल की प्रोग्रामिंगमध्ये अॅरे किती उपयुक्त आहेत?"
"निश्चितपणे, ऋषी! मी आधीच एकापेक्षा जास्त कामं सोडवली आहेत."
"तुमच्या कार्यांमध्ये पुनरावृत्ती होणारी क्रिया होती का? तुम्ही ज्या प्रकारची पुनरावृत्ती केली आहे."
"जर मी तुम्हाला बरोबर समजले असेल, तर तुम्हाला वेगवेगळ्या कार्यांमध्ये समान क्रिया म्हणायचे आहे? उदाहरणार्थ, अॅरेची सामग्री प्रदर्शित करण्यासाठी सर्वत्र लूप वापरणे — मी ते करून खूप कंटाळलो आहे!"
"होय, मला तेच म्हणायचे आहे. Java च्या निर्मात्यांच्या लक्षात आले की जावा प्रोग्रामर अनेकदा अॅरेसह काम करताना समान कोड लिहितात. उदाहरणार्थ, अॅरेचा भाग दुसर्या अॅरेमध्ये कॉपी करण्यासाठी कोड किंवा अॅरेच्या प्रत्येक सेलला समान भरण्यासाठी कोड मूल्य. किंवा तुमचे उदाहरण: स्क्रीनवर वाचनीय स्वरूपात अॅरेची सामग्री प्रदर्शित करण्यासाठी कोड.
"आणि वास्तविक प्रोग्रामरचा एक अतिशय महत्त्वाचा नियम आहे: स्वतःची पुनरावृत्ती करू नका. तुम्ही हे मान्य कराल की अनावश्यक काम करणे चुकीचे आहे - तुम्हाला त्यासाठी मोबदला मिळणार नाही. प्रभावी कामासाठी चांगले पैसे दिले जातात, माझ्यावर विश्वास ठेवा. योगायोगाने, नवशिक्याचे कोड मोठ्या प्रमाणात पुनरावृत्ती कोडद्वारे लगेच ओळखता येतो.
"जावाच्या निर्मात्यांनी यावर विचार केला, आणि त्यात सर्वात लोकप्रिय अॅरे-संबंधित क्रिया टाकून विशेष Arraysवर्ग (त्याचे पूर्ण नाव ) तयार केले."java.util.Arrays
"हम्म... खूप इंटरेस्टिंग. मग त्यात नक्की काय आहे?
"प्रत्येक प्रसंगासाठी यामध्ये अनेक पद्धती आहेत, परंतु प्रथम आम्ही त्यापैकी फक्त 10 विचार करू - सर्वात सोपी आणि बहुतेक वेळा वापरली जाणारी.
Arrays.toString()
"आम्ही पहिली पद्धत पाहू Arrays.toString(). पण प्रथम, थोडी पार्श्वभूमी.
"जावामधील प्रत्येक अॅरेमध्ये एक toString()पद्धत असते, जी 'अॅरेचे मजकूर प्रतिनिधित्व' देते. तुम्ही खालील विधान वापरून अॅरेचे मजकूर प्रतिनिधित्व मिळवू शकता:
String str = name.toString();
name" अॅरे व्हेरिएबलचे नाव कुठे आहे आणि strअॅरेचे स्ट्रिंग रिप्रेझेंटेशन साठवून ठेवणाऱ्या व्हेरिएबलचे नाव आहे. अमिगो, तुम्ही पद्धत वापरून स्क्रीनवर अॅरे प्रिंट करण्याचा प्रयत्न केला आहे का ?System.out.println(name)
मी कबूल करतो, असे घडले. मला काही बकबक दिसले. मी हानीच्या मार्गापासून दूर राहण्याचा आणि लूप वापरणे सुरू ठेवण्याचा निर्णय घेतला.
"बहुधा तुम्ही असे काहीतरी पाहिले आहे:
I@37afeb11
"पहिल्या अक्षराचा Iअर्थ असा आहे की तो एक intअॅरे आहे आणि त्यानंतरची चिन्हे@ ही मेमरीमधील एका ऑब्जेक्टचा पत्ता आहे. तुम्ही त्याचा मेमरीमधील अॅरेचा पत्ता म्हणून विचार करू शकता. एकीकडे, ही तंतोतंत माहितीमध्ये साठवलेली माहिती आहे. अॅरे व्हेरिएबल, पण दुसरीकडे, तुम्हाला काहीतरी वेगळे अपेक्षित होते, नाही का?"
"नक्की! मी अॅरेमधील मूल्ये पाहण्याची योजना आखत होतो. मला अपेक्षित असलेली ही शेवटची गोष्ट होती."
"आणि म्हणूनच त्यांनी Arrays.toString()पद्धत आणली - अॅरेची मूल्ये प्रदर्शित करण्यासाठी. आम्ही त्याला असे म्हणतो:
String str = Arrays.toString(name);
उदाहरणे:
|
व्हेरिएबलमध्ये strस्ट्रिंग असेल"[1, 2, 3]" |
|
व्हेरिएबलमध्ये strस्ट्रिंग असेल"[]" |
|
व्हेरिएबलमध्ये strस्ट्रिंग असेल"[Hi, How's, life?]" |
Arrays.deepToString()
"तथापि, toString()द्विमितीय अॅरेच्या बाबतीत ही पद्धत पुरेशी नाही. दुसऱ्या शब्दांत, तुम्ही कॉल करण्याचा प्रयत्न केल्यास Arrays.toString(), तुम्हाला काहीतरी परिचित दिसेल:
[I@37afeb11, I@37afeb21, I@37afeb31]
"हे सर्व आहे कारण द्वि-आयामी अॅरेचे सेल एक-आयामी अॅरेचा संदर्भ देतात. आणि एक-आयामी अॅरे एका स्ट्रिंगमध्ये कसे रूपांतरित केले जातात? अगदी तुम्ही वर पाहिल्याप्रमाणे.
"मग काय करावे? आपण द्विमितीय अॅरे योग्यरित्या कसे प्रदर्शित करू?"
"जावाच्या निर्मात्यांनाही याचा अंदाज होता. यासाठी, Arraysवर्गाची आणखी एक खास पद्धत आहे — deepToString(). कॉल करणे असे दिसते:
String str = Arrays.deepToString(name);
"ही पद्धत दोन-आयामी, एक-आयामी, त्रि-आयामी किंवा सर्वसाधारणपणे, कोणतेही परिमाण असलेल्या अॅरे पास केली जाऊ शकते आणि ती नेहमी अॅरेचे घटक प्रदर्शित करेल.
उदाहरणे:
|
व्हेरिएबलमध्ये strस्ट्रिंग असेल"[1, 2, 3]" |
|
व्हेरिएबलमध्ये strस्ट्रिंग असेल"[[1, 1], [2, 2], [3, 3]]" |
|
व्हेरिएबलमध्ये strस्ट्रिंग असेल"[[[1, 2, 3], [1]], [[]]]" |
Arrays.equals()
"स्क्रीनवर अॅरे कसे प्रदर्शित करायचे ते आम्ही शोधून काढले. अॅरेची तुलना करण्याबद्दल काय? तुम्हाला आठवते का की आम्ही स्ट्रिंग्सची तुलना करण्यासाठी कोणत्या पद्धती वापरू शकतो?"
"मी सहसा पद्धत वापरतो equals!
"होय, equals, आणि देखील equalsIgnoreCase(जे अपरकेस आणि लोअरकेसचा विचार न करता स्ट्रिंगची तुलना करते).
"चांगली बातमी: तुम्ही अॅरेसाठी पद्धत देखील वापरू शकता equals. वाईट बातमी: ती अॅरेच्या सामग्रीची तुलना करत नाही. equalsअॅरेची पद्धत ऑपरेटरसारखीच गोष्ट करते ==— ती संदर्भांची तुलना करते.
उदाहरणे:
|
false(संदर्भ समान नाहीत) |
|
दोन अॅरेच्या संदर्भांची तुलना करण्याची equalsपद्धत . (संदर्भ समान नाहीत)arraysfalse |
"मग आम्ही काय करू? आम्ही त्यांच्या सामग्रीवर आधारित अॅरेची तुलना कशी करू?"
"पुन्हा Arraysवर्ग आमच्या बचावासाठी येतो. अधिक विशेषतः, त्याची Arrays.equals()पद्धत. आम्ही याला असे म्हणतो:
Arrays.equals(name1, name2)
true" अॅरे समान लांबीचे असल्यास आणि त्यांचे घटक समान असल्यास पद्धत परत येते . अन्यथा, ती परत येते false.
उदाहरणे:
|
दोन अॅरेच्या संदर्भांची तुलना करण्याची equalsपद्धत . (संदर्भ समान नाहीत)arraysfalse |
|
true(सामग्री समान आहेत) |
|
false(अॅरेची सामग्री वेगळी आहे) |
Arrays.deepEquals()
"आणि, जसे तुम्ही आधीच अंदाज लावला असेल, Arrays.equalsपद्धत द्वि-आयामी अॅरेसाठी योग्यरित्या कार्य करणार नाही: ती द्विमितीय अॅरेला एका-आयामी अॅरेप्रमाणे हाताळते ज्याचे घटक एक-आयामी अॅरेचे पत्ते आहेत.
"अशा प्रकारे, बहुआयामी अॅरे ( ) ची योग्यरित्या तुलना करण्यासाठी n = 1, 2, 3,... त्यांनी पद्धत आणली Arrays.deepEquals(). त्याला कॉल करणे असे दिसते:
Arrays.deepEquals(name1, name2)
true" अॅरे समान लांबीचे असल्यास आणि त्यांचे घटक समान असल्यास पद्धत परत येते . अन्यथा, ती परत येतेfalse. जर अॅरेमधील घटक देखील अॅरे असतील, तर Arrays.deepEquals()त्यांची तुलना करण्यासाठी पद्धत वापरली जाते आणि असेच.
उदाहरणे:
|
दोन अॅरेच्या संदर्भांची तुलना करण्याची equalsपद्धत . (संदर्भ समान नाहीत)arrays false |
|
पद्धत Arrays.equalsतुलना करेल आणि एक-आयामी अॅरे म्हणून जे संदर्भ संग्रहित करते. त्यात वेगवेगळे संदर्भ आहेत. (अॅरेची सामग्री समान नाही) x1x2false |
|
true(सामग्री समान आहेत) |
"धन्यवाद, ऋषी! भविष्यात माझे जीवन सोपे आणि आनंदी करण्यासाठी मला हा धडा आवश्यक आहे. आता मी अॅरे क्लासच्या पद्धती वापरेन आणि माझे प्रोग्राम आणखी जलद लिहीन.
"मी हेच मोजत होतो, हा-हा. पण या सर्व अॅरे वर्गातील मनोरंजक पद्धती नाहीत. पुढच्या वेळी मी तुम्हाला इतरांबद्दल सांगेन."
GO TO FULL VERSION