Java Language
StringBuilder
खोज…
परिचय
Java StringBuilder वर्ग का उपयोग उत्परिवर्तनीय (परिवर्तनीय) स्ट्रिंग बनाने के लिए किया जाता है। Java StringBuilder वर्ग StringBuffer वर्ग के समान है सिवाय इसके कि यह गैर-सिंक्रनाइज़ है। यह JDK 1.5 के बाद से उपलब्ध है।
वाक्य - विन्यास
नया स्ट्रिंगबुल्ट ()
नई स्ट्रिंगबुल्ट (अंतर क्षमता)
न्यू स्ट्रिंगबर्स्ट
न्यू स्ट्रिंगबर्लस्ट (स्ट्रिंगबर्ल बिल्डर)
नई स्ट्रिंग स्ट्रिंग (स्ट्रिंग स्ट्रिंग)
नई स्ट्रिंगजॉइनर (चारसामेंस सीमांकक)
नया स्ट्रिंगजॉइनर (चारसिमेंस सीमांकक, चारसामेंस उपसर्ग, चारसेंपेंस प्रत्यय)
टिप्पणियों
एक नया बनाना StringBuilder प्रकार के साथ char के रूप में एक पैरामीटर तर्क के साथ निर्माता बुला में परिणाम होगा int capacity और तर्क के साथ नहीं एक String string :
StringBuilder v = new StringBuilder('I'); //'I' is a character, "I" is a String.
System.out.println(v.capacity()); --> output 73
System.out.println(v.toString()); --> output nothing
एक स्ट्रिंग एन बार दोहराएँ
समस्या: एक बनाएं String युक्त n एक की पुनरावृत्ति String s ।
तुच्छ दृष्टिकोण बार-बार String समाप्त करेगा
final int n = ...
final String s = ...
String result = "";
for (int i = 0; i < n; i++) {
result += s;
}
इस बनाता है n करने के लिए 1 से युक्त नया स्ट्रिंग उदाहरणों n की पुनरावृत्ति s के क्रम में जिसके परिणामस्वरूप O(s.length() * n²) = O(s.length() * (1+2+...+(n-1)+n)) ।
इस String से बचने के लिए StringBuilder का उपयोग किया जाना चाहिए, जो इसके बजाय O(s.length() * n) में String बनाने की अनुमति देता है:
final int n = ...
final String s = ...
StringBuilder builder = new StringBuilder();
for (int i = 0; i < n; i++) {
builder.append(s);
}
String result = builder.toString();
StringBuffer, StringBuilder, Formatter और StringJoiner की तुलना करना
StringBuffer , StringBuilder , Formatter और StringJoiner कक्षाएं Java SE उपयोगिता वर्ग हैं जिनका उपयोग मुख्य रूप से अन्य सूचनाओं से तार को इकट्ठा करने के लिए किया जाता है:
StringBufferवर्ग जावा 1.0 के बाद से मौजूद है, और पात्रों के अनुक्रम वाले "बफर" के निर्माण और संशोधन के लिए कई तरीके प्रदान करता है।मूल
StringBufferवर्ग के साथ प्रदर्शन समस्याओं को हल करने के लिएStringBuffer5 मेंStringBuilderवर्ग जोड़ा गया था। दो clases के लिए एपीआई अनिवार्य रूप से एक ही हैं।StringBufferऔरStringBuilderबीच मुख्य अंतर यह है कि पूर्व थ्रेड-सुरक्षित और सिंक्रनाइज़ है और बाद वाला नहीं है।
इस उदाहरण से पता चलता है कि StringBuilder का उपयोग कैसे किया जा सकता है:
int one = 1;
String color = "red";
StringBuilder sb = new StringBuilder();
sb.append("One=").append(one).append(", Color=").append(color).append('\n');
System.out.print(sb);
// Prints "One=1, Colour=red" followed by an ASCII newline.
( StringBuffer वर्ग का उपयोग उसी तरह किया जाता है: StringBuilder को StringBuffer में बदल दें।)
StringBuffer और StringBuilder कक्षाएं असेंबलिंग और स्ट्रिंग्स दोनों को संशोधित करने के लिए उपयुक्त हैं; यानी वे वर्णों को बदलने और हटाने के साथ-साथ उन्हें विभिन्न में जोड़ने के लिए तरीके प्रदान करते हैं। तार को असेंबल करने के कार्य के लिए दो वर्गों को पुनर्जीवित करना विशिष्ट है।
Formatterवर्ग जावा 5 में जोड़ा गया था, और सी मानक पुस्तकालय मेंsprintfफ़ंक्शन पर शिथिल रूप से तैयार किया गया है। यह एम्बेडेड प्रारूप विनिर्देशक और अन्य तर्कों के अनुक्रमों के साथ एक प्रारूप स्ट्रिंग लेता है, और तर्कों को पाठ में परिवर्तित करके और प्रारूप विनिर्देशक के स्थान पर उन्हें प्रतिस्थापित करके एक स्ट्रिंग उत्पन्न करता है। प्रारूप निर्दिष्टकर्ताओं का विवरण कहता है कि कैसे तर्क को पाठ में परिवर्तित किया जाता है।StringJoinerवर्ग को जावा 8 में जोड़ा गया था। यह एक विशेष उद्देश्य वाला फ़ॉर्मेटर है, जो विशेष रूप से उन दोनों के बीच विभाजकों के साथ तार के अनुक्रम का प्रारूपण करता है। यह एक धाराप्रवाह एपीआई के साथ बनाया गया है, और जावा 8 धाराओं के साथ इस्तेमाल किया जा सकता है।
यहाँ Formatter उपयोग के कुछ विशिष्ट उदाहरण दिए गए हैं:
// This does the same thing as the StringBuilder example above
int one = 1;
String color = "red";
Formatter f = new Formatter();
System.out.print(f.format("One=%d, colour=%s%n", one, color));
// Prints "One=1, Colour=red" followed by the platform's line separator
// The same thing using the `String.format` convenience method
System.out.print(String.format("One=%d, color=%s%n", one, color));
StringJoiner वर्ग उपरोक्त कार्य के लिए आदर्श नहीं है, इसलिए यहां स्ट्रिंग के एक प्रारूपण का एक उदाहरण है।
StringJoiner sj = new StringJoiner(", ", "[", "]");
for (String s : new String[]{"A", "B", "C"}) {
sj.add(s);
}
System.out.println(sj);
// Prints "[A, B, C]"
4 वर्गों के लिए उपयोग-मामलों को संक्षेप में प्रस्तुत किया जा सकता है:
-
StringBuilderविधानसभा किसी भी स्ट्रिंग या स्ट्रिंग संशोधन कार्य के लिए उपयुक्त है। -
StringBufferउपयोग (केवल) जब आपकोStringBuilderथ्रेड-सुरक्षित संस्करण की आवश्यकता होती है। -
Formatterअधिक बेहतर स्ट्रिंग कार्यक्षमता स्वरूपण प्रदान करता है, लेकिन जैसा कि कुशल के रूप में नहीं हैStringBuilder। ऐसा इसलिए है क्योंकिFormatter.format(...)लिए प्रत्येक कॉल की आवश्यकता है:-
formatस्ट्रिंग पार्सिंग, - एक varargs सरणी बनाना और आबाद करना, और
- किसी भी आदिम प्रकार के तर्क को स्वत: स्फूर्त करना।
-
-
StringJoinerविभाजक के साथ तार के एक दृश्य की संक्षिप्त और कुशल स्वरूपण प्रदान करता है, लेकिन अन्य स्वरूपण कार्यों के लिए उपयुक्त नहीं है।