"अभिवादन, अमिगो!"
"हॅलो, ऋषी!"
"तुम्हाला आता काहीतरी स्वारस्यपूर्ण शिकण्यासाठी स्ट्रिंग्सबद्दल पुरेशी माहिती आहे. विशेष म्हणजे, एक नवीन वर्ग जो स्ट्रिंग वर्गासारखाच नाही, परंतु अगदी सारखा नाही."
"सामान्य स्ट्रिंग्स कसे कमी पडतात आणि इतर स्ट्रिंग सारख्या वर्गांची आवश्यकता का आहे हे मला पूर्णपणे स्पष्ट नसले तरी ते मनोरंजक वाटत आहे."
"जावामधील स्ट्रिंग्स अपरिवर्तनीय वस्तू आहेत या वस्तुस्थितीपासून सुरुवात करूया."
"ते कसं? मी विसरलो... किंवा मला कधीच कळलं नाही की सुरुवात..."
"मी तुम्हाला आठवण करून देतो की अपरिवर्तनीय वस्तू म्हणजे ज्यांची अवस्था निर्माण झाल्यानंतर बदलता येत नाही."
"अहो... Java मध्ये स्ट्रिंग्स अपरिवर्तनीय का आहेत?"
"हे स्ट्रिंग क्लास अत्यंत ऑप्टिमाइझ करण्यासाठी आणि ते सर्वत्र वापरण्याची परवानगी देण्यासाठी केले गेले. उदाहरणार्थ, हॅशमॅप संग्रहामध्ये की म्हणून वापरण्यासाठी केवळ अपरिवर्तनीय प्रकारांची शिफारस केली जाते .
"तथापि, अनेकदा अशा परिस्थिती उद्भवतात जेव्हा प्रोग्रामरना स्ट्रिंग क्लास बदलण्यायोग्य असणे अधिक सोयीचे असते. त्यांना असा वर्ग हवा असतो जो प्रत्येक वेळी त्याच्या पद्धतींपैकी एखादी पद्धत कॉल केल्यावर नवीन सबस्ट्रिंग तयार करत नाही."
"पण ते कशासाठी चांगले आहे?"
"ठीक आहे, समजा आपल्याकडे खूप मोठी स्ट्रिंग आहे आणि आपल्याला त्याच्या शेवटी काहीतरी जोडण्याची आवश्यकता आहे. या प्रकरणात, अक्षरांचा संग्रह ( ArrayList<Character>
) देखील स्ट्रिंग ऑब्जेक्ट्स सतत पुन्हा तयार करण्यापेक्षा आणि जोडण्यापेक्षा अधिक कार्यक्षम असू शकतो."
"आणि म्हणूनच आम्हाला स्ट्रिंग क्लास नसलेल्या स्ट्रिंग्सची गरज आहे?"
StringBuilder
"अगदी. जावा भाषेने स्ट्रिंग सारखा प्रकार जोडला आहे जो बदलता येतो. त्याला " म्हणतात .
एखादी वस्तू तयार करणे
"विद्यमान स्ट्रिंगवर आधारित ऑब्जेक्ट तयार करण्यासाठी StringBuilder
, तुम्हाला विधान कार्यान्वित करणे आवश्यक आहे जसे:
StringBuilder name = new StringBuilder(string);
"रिक्त बदलण्यायोग्य स्ट्रिंग तयार करण्यासाठी, तुम्हाला यासारखे विधान वापरण्याची आवश्यकता आहे:
StringBuilder name = new StringBuilder();
पद्धतींची यादी
" StringBuilder
वर्गात दोन डझन उपयुक्त पद्धती आहेत. येथे सर्वात महत्त्वाच्या आहेत:
पद्धत | वर्णन |
---|---|
|
पास केलेल्या ऑब्जेक्टला स्ट्रिंगमध्ये रूपांतरित करते आणि वर्तमान स्ट्रिंगमध्ये जोडते |
|
पास केलेल्या ऑब्जेक्टला स्ट्रिंगमध्ये रूपांतरित करते आणि वर्तमान स्ट्रिंगच्या मध्यभागी समाविष्ट करते |
|
स्टार्ट..एंड इंटरव्हलने निर्दिष्ट केलेल्या स्ट्रिंगचा भाग पास केलेल्या स्ट्रिंगसह पुनर्स्थित करते |
|
स्ट्रिंगमधून निर्दिष्ट निर्देशांकासह वर्ण काढून टाकते |
|
स्ट्रिंगमधून निर्दिष्ट अंतरालमधील वर्ण काढून टाकते |
|
वर्तमान स्ट्रिंगमध्ये सबस्ट्रिंग शोधते |
|
वर्तमान स्ट्रिंगमधील सबस्ट्रिंग शोधते, शेवटपासून सुरू होते |
|
पास केलेल्या अनुक्रमणिकेवर स्ट्रिंगमधील वर्ण मिळवते |
|
निर्दिष्ट मध्यांतराने परिभाषित केलेले सबस्ट्रिंग मिळवते |
|
वर्तमान स्ट्रिंग उलट करते. |
|
निर्दिष्ट निर्देशांकावरील वर्ण पास केलेल्या वर्णामध्ये बदलते |
|
वर्णांमध्ये स्ट्रिंगची लांबी मिळवते |
"आणि आता मी तुम्हाला या प्रत्येक पद्धतीचे थोडक्यात वर्णन करेन.
स्ट्रिंगला जोडत आहे
"परिवर्तनीय स्ट्रिंग ( ) मध्ये काहीतरी जोडण्यासाठी StringBuilder
, append()
पद्धत वापरा. उदाहरण:
कोड | वर्णन |
---|---|
|
Hi |
मानक स्ट्रिंगमध्ये रूपांतरित करत आहे
StringBuilder
"एखाद्या ऑब्जेक्टला स्ट्रिंग ऑब्जेक्टमध्ये रूपांतरित करण्यासाठी , तुम्हाला फक्त त्याची toString()
पद्धत कॉल करणे आवश्यक आहे. उदाहरण
कोड | आउटपुट |
---|---|
|
Hi123 |
मी एखादे पात्र कसे हटवू?
"परिवर्तनीय स्ट्रिंगमधील वर्ण हटवण्यासाठी, तुम्हाला deleteCharAt()
पद्धत वापरण्याची आवश्यकता आहे. उदाहरण:
कोड | आउटपुट |
---|---|
|
Helo |
मी स्ट्रिंगचा भाग दुसर्या स्ट्रिंगने कसा बदलू?
"यासाठी replace(int begin, int end, String str)
पद्धत आहे. उदाहरण:
कोड | आउटपुट |
---|---|
|
MeHello |
"सोयीचे वाटते. धन्यवाद, ऋषी."
"त्याचा उल्लेख करू नका. हे कसे, तुम्ही स्ट्रिंग मागे फिरवू शकता का? तुम्ही ते कसे कराल?"
"ठीक आहे... मी एक तयार करेन StringBuilder
, त्यात एक स्ट्रिंग ठेवू... नंतर एक नवीन स्ट्रिंग तयार करेन, आणि शेवटच्या अक्षरापासून पहिल्या वर्णापर्यंत लूपमध्ये... किंवा कदाचित थोडासा शिफ्ट...
"वाईट नाही. पण ते जलद असू शकते. हे करण्यासाठी एक विशेष पद्धत आहे — reverse();
उदाहरण:
कोड | आउटपुट |
---|---|
|
olleH |
" StringBuilder
क्लास व्यतिरिक्त, Java मध्ये आणखी एक स्ट्रिंग सारखी क्लास आहे ज्याला म्हणतात StringBuffer
. हा वर्गाचा अॅनालॉग आहे StringBuilder
, परंतु त्याच्या पद्धती सुधारकाने चिन्हांकित केल्या आहेत synchronized
."
"म्हणजे काय?"
"याचा अर्थ असा की StringBuffer
ऑब्जेक्टवर एकाच वेळी अनेक थ्रेड्समधून प्रवेश केला जाऊ शकतो."
"मला अजून थ्रेड्सची फारशी ओळख नाही. पण 'एकाधिक थ्रेड्सवरून ऍक्सेस करता येते' हे 'एकाधिक थ्रेड्सवरून ऍक्सेस करता येत नाही' पेक्षा स्पष्टपणे चांगले आहे... मग नेहमी का वापरत नाही? StringBuffer
"
"कारण ते पेक्षा खूपच धीमे आहे . जेव्हा तुम्ही Java मल्टीथ्रेडिंगStringBuilder
क्वेस्टमध्ये मल्टीथ्रेडिंग सक्रियपणे एक्सप्लोर करण्यास प्रारंभ करता तेव्हा तुम्हाला अशा वर्गाची आवश्यकता असू शकते .
"विसरू नये म्हणून मी ते माझ्या आठवणीत लिहीन. 'भविष्यासाठी' म्हणून चिन्हांकित केले आहे.
GO TO FULL VERSION