"வாழ்த்துக்கள், அமிகோ!"
"ஹலோ ரிஷி!"
"சுவாரஸ்யமான ஒன்றைக் கற்றுக்கொள்வதற்கான சரங்களைப் பற்றி நீங்கள் இப்போது போதுமான அளவு அறிந்திருக்கிறீர்கள். மேலும் குறிப்பாக, சரம் வகுப்பைப் போலவே, ஆனால் சரியாகப் பொருந்தாத ஒரு புதிய வகுப்பு."
"சாதாரண சரங்கள் எவ்வாறு குறைகின்றன மற்றும் பிற சரம் போன்ற வகுப்புகள் ஏன் தேவைப்படுகின்றன என்பது எனக்கு முற்றிலும் தெளிவாகத் தெரியவில்லை என்றாலும் புதிராகத் தெரிகிறது."
"ஜாவாவில் சரங்கள் மாறாத பொருள்கள் என்பதில் இருந்து ஆரம்பிக்கலாம்."
"அது எப்படி? நான் மறந்துவிட்டேன் ... அல்லது நான் தொடங்குவது தெரியாது ..."
"மாறாத பொருள்கள், அவை உருவாக்கப்பட்ட பிறகு அதன் நிலைகளை மாற்ற முடியாதவை என்பதை நான் உங்களுக்கு நினைவூட்டுகிறேன்."
"ஆஹா... ஜாவாவில் சரங்கள் ஏன் மாறாமல் இருக்கின்றன?"
"இது சரம் வகுப்பை மிகவும் உகந்ததாக்குவதற்கும், எல்லா இடங்களிலும் பயன்படுத்தப்படுவதற்கும் இது செய்யப்பட்டது. எடுத்துக்காட்டாக, ஹாஷ்மேப் சேகரிப்பில் மாறாத வகைகள் மட்டுமே விசைகளாகப் பயன்படுத்த பரிந்துரைக்கப்படுகிறது .
"இருப்பினும், ப்ரோகிராமர்கள் ஸ்ட்ரிங் கிளாஸ் மாறக்கூடியதாக இருப்பதை மிகவும் வசதியாகக் காணும் சூழ்நிலைகள் அடிக்கடி எழுகின்றன. ஒவ்வொரு முறையும் அதன் முறைகளில் ஒன்று அழைக்கப்படும்போது புதிய சப்ஸ்ட்ரிங்கை உருவாக்காத வகுப்பை அவர்கள் விரும்புகிறார்கள்."
"ஆனால் அது எதற்கு நல்லது?"
"சரி, எங்களிடம் மிகப் பெரிய சரம் உள்ளது என்று வைத்துக்கொள்வோம், அதன் முடிவில் எதையாவது அடிக்கடி சேர்க்க வேண்டும். இந்த விஷயத்தில், எழுத்துக்களின் ( 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
ஜாவாவில் மற்றொரு சரம் போன்ற வகுப்பு StringBuffer
உள்ளதுStringBuilder
synchronized
"அதற்கு என்ன பொருள்?"
StringBuffer
" ஒரே நேரத்தில் பல நூல்களில் இருந்து பொருளை அணுக முடியும் என்பதே இதன் பொருள் ."
"எனக்கு இன்னும் இழைகள் பற்றி அதிகம் பரிச்சயம் இல்லை. ஆனால் 'பல திரிகளில் இருந்து அணுக முடியாது' என்பதை விட 'பல திரிகளில் இருந்து அணுகலாம்' என்பது தெளிவாக உள்ளது... பிறகு ஏன் எப்போதும் பயன்படுத்தக்கூடாது? StringBuffer
"
"ஏனெனில் இது மிகவும் மெதுவாக உள்ளது . ஜாவா மல்டித்ரெடிங்StringBuilder
தேடலில் மல்டித்ரெடிங்கை நீங்கள் தீவிரமாக ஆராயத் தொடங்கும் போது உங்களுக்கு அத்தகைய வகுப்பு தேவைப்படலாம் .
"எதிர்காலத்திற்காக" என்று குறிக்கப்பட்டதை மறக்காமல் இருக்க என் நினைவாக எழுதுகிறேன்.
GO TO FULL VERSION