मैं स्ट्रिंग में एक सरणी को बदलने के लिए जावा कोड चाहता हूं।
array.toString()
? थोड़ा और विस्तार में बताओ।
मैं स्ट्रिंग में एक सरणी को बदलने के लिए जावा कोड चाहता हूं।
array.toString()
? थोड़ा और विस्तार में बताओ।
जवाबों:
यदि आप किसी सरणी का "डिबग-स्टाइल" डंप चाहते हैं:
String str = Arrays.toString(arr);
या, अधिक नियंत्रण के लिए (जावा 8 से पहले):
StringBuilder builder = new StringBuilder();
for(String s : arr) {
builder.append(s);
}
String str = builder.toString();
(जावा 8 और ऊपर):
String str = String.join(",", arr);
और अगर आप Android कोण से आ रहे हैं:
String str = TextUtils.join(",", arr);
आप उपरोक्त वर्णों के आधार पर उपरोक्त को संशोधित कर सकते हैं, यदि कोई हो, तो आप तार के बीच में चाहते हैं।
आप प्री-जावा 8 कोड के समान कोड के पास देख सकते हैं लेकिन उपयोग करना StringBuffer
- StringBuilder
एक नया वर्ग है जो थ्रेड-सुरक्षित नहीं है, लेकिन इसलिए एकल थ्रेड में बेहतर प्रदर्शन है क्योंकि यह अनावश्यक सिंक्रनाइज़ेशन के साथ दूर होता है। संक्षेप में, आप StringBuilder
99% मामलों में बेहतर उपयोग कर रहे हैं - कार्यक्षमता बुद्धिमान, दो समान हैं।
यह एक स्ट्रिंग का उपयोग नहीं करता है और बस इसके साथ + = जोड़ते हैं जैसे कुछ उत्तर यहां दिखाए जाते हैं। यह जीसी को छत के माध्यम से भेजता है क्योंकि आप अपने स्ट्रिंग में आइटम के रूप में कई स्ट्रिंग ऑब्जेक्ट बना रहे हैं और फेंक रहे हैं। छोटे सरणियों के लिए आप वास्तव में अंतर नहीं देख सकते हैं, लेकिन बड़े लोगों के लिए यह परिमाण धीमी करने के आदेश हो सकते हैं।
Arrays.toString(yourArray);
लेकिन मुझे लगता है कि आपने इस्तेमाल किया हैyourArray.toString();
अपाचे कॉमन्स का उपयोग करें StringUtils.join()
। यह एक सरणी लेता है, एक पैरामीटर के रूप में (और इसके लिए भी अधिभार Iterable
और Iterator
पैरामीटर हैं) और toString()
प्रत्येक तत्व पर कॉल (यदि यह शून्य नहीं है) प्रत्येक तत्व स्ट्रिंग प्रतिनिधित्व प्राप्त करने के लिए। प्रत्येक तत्वों स्ट्रिंग प्रतिनिधित्व को एक स्ट्रिंग में एक विभाजक के साथ जोड़ा जाता है यदि बीच में निर्दिष्ट किया जाता है:
String joinedString = StringUtils.join(new Object[]{"a", "b", 1}, "-");
System.out.println(joinedString);
पैदा करता है:
a-b-1
मुझे इसके लिए Google के Guava Joiner का उपयोग करना पसंद है , जैसे:
Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione");
के रूप में एक ही उत्पादन होगा स्ट्रिंग:
new String("Harry, Ron, Hermione");
ETA: Java 8 को अब समान समर्थन प्राप्त है:
String.join(", ", "Harry", "Ron", "Hermione");
शून्य मानों को लंघन के लिए समर्थन नहीं देख सकता है, लेकिन यह आसानी से चारों ओर काम कर रहा है।
null
तो वह होगा "जिसका नाम उल्लेख नहीं किया जाना चाहिए" :-)
Joiner.on(", ").useForNull("Voldemort").join("Harry", null, "Ron", "Hermione");
String.join(", ", "Harry", null, "Ron", "Hermione").replaceAll("null", "Voldermart");
आप यह कर सकते हैं, a
आदिम प्रकार की एक सरणी दी :
StringBuffer result = new StringBuffer();
for (int i = 0; i < a.length; i++) {
result.append( a[i] );
//result.append( optional separator );
}
String mynewstring = result.toString();
प्रयास करें Arrays.deepToString विधि।
निर्दिष्ट सरणी की "गहरी सामग्री" का एक स्ट्रिंग प्रतिनिधित्व लौटाता है। यदि सरणी में अन्य सरणियाँ तत्व के रूप में हैं, तो स्ट्रिंग प्रतिनिधित्व में उनकी सामग्री और इतने पर शामिल हैं। इस पद्धति को बहुआयामी सरणियों को तार में परिवर्तित करने के लिए डिज़ाइन किया गया है
अधिक भार वाले तरीकों से Arrays.toString आज़माएं ।
या फिर, इसे सामान्य कार्यान्वयन से नीचे आज़माएँ:
public static void main(String... args) throws Exception {
String[] array = {"ABC", "XYZ", "PQR"};
System.out.println(new Test().join(array, ", "));
}
public <T> String join(T[] array, String cement) {
StringBuilder builder = new StringBuilder();
if(array == null || array.length == 0) {
return null;
}
for (T t : array) {
builder.append(t).append(cement);
}
builder.delete(builder.length() - cement.length(), builder.length());
return builder.toString();
}
सार्वजनिक वर्ग ArrayToString {
सार्वजनिक स्थैतिक शून्य main (String [] args) { स्ट्रिंग [] strArray = नया स्ट्रिंग [] {"जावा", "PHP", ".NET", "PERL", "C", "COBOL"};String newString = Arrays.toString(strArray); newString = newString.substring(1, newString.length()-1); System.out.println("New New String: " + newString); } }
String[] strings = new String[25000];
for (int i = 0; i < 25000; i++) strings[i] = '1234567';
String result;
result = "";
for (String s : strings) result += s;
//linear +: 5s
result = "";
for (String s : strings) result = result.concat(s);
//linear .concat: 2.5s
result = String.join("", strings);
//Java 8 .join: 3ms
Public String join(String delimiter, String[] s)
{
int ls = s.length;
switch (ls)
{
case 0: return "";
case 1: return s[0];
case 2: return s[0].concat(delimiter).concat(s[1]);
default:
int l1 = ls / 2;
String[] s1 = Arrays.copyOfRange(s, 0, l1);
String[] s2 = Arrays.copyOfRange(s, l1, ls);
return join(delimiter, s1).concat(delimiter).concat(join(delimiter, s2));
}
}
result = join("", strings);
// Divide&Conquer join: 7ms
यदि आपके पास चॉइस नहीं है, लेकिन जावा 6 या 7 का उपयोग करने के लिए तो आपको डिवाइड एंड कॉन्कर जॉइन का उपयोग करना चाहिए।
आप कोड चाहते हैं जो arrayList से स्ट्रिंग का उत्पादन करता है,
Iterate through all elements in list and add it to your String result
आप इसे 2 तरीकों से कर सकते हैं: स्ट्रिंग को परिणाम के रूप में या StringBuffer / StringBuilder का उपयोग करना।
उदाहरण:
String result = "";
for (String s : list) {
result += s;
}
... लेकिन यह प्रदर्शन के कारण अच्छा अभ्यास नहीं है। बेहतर StringBuffer (थ्रेड्स सुरक्षित) या StringBuilder का उपयोग कर रहा है जो स्ट्रिंग्स को जोड़ने के लिए अधिक उपयुक्त हैं
Apache Commons StringUtils लाइब्रेरी की जॉइन विधि का उपयोग करें।
String[] stringArray = {"a","b","c"};
StringUtils.join(stringArray, ",");
String array[]={"one","two"};
String s="";
for(int i=0;i<array.length;i++)
{
s=s+array[i];
}
System.out.print(s);
यदि आपको पता है कि सरणी में कितने तत्व हैं, तो एक सरल तरीका यह कर रहा है:
String appendedString = "" + array[0] + "" + array[1] + "" + array[2] + "" + array[3];