আমি স্ট্রিংগুলির অ্যারেগুলিকে স্ট্রিংয়ে রূপান্তর করার জন্য জাভা কোড চাই।
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);
এবং যদি আপনি অ্যান্ড্রয়েড কোণ থেকে এসেছেন:
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
আমি এর জন্য গুগলের পেয়ারা যোগদানকারী ব্যবহার করতে পছন্দ করি , যেমন:
Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione");
একই স্ট্রিং উত্পাদন করবে:
new String("Harry, Ron, Hermione");
ইটিএ: জাভা 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();
}
পাবলিক ক্লাস অ্যারেটোস্ট্রিং {
পাবলিক স্ট্যাটিক শূন্য মূল (স্ট্রিং [] আরগস) { স্ট্রিং [] স্ট্রআরে = নতুন স্ট্রিং [] Java "জাভা", "পিএইচপি", "। নেট", "পার্ল", "সি", "কোবল"};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 ব্যবহার করতে হয় তবে আপনার ডিভাইড এবং কনকয়ের জয়েনটি ব্যবহার করা উচিত।
আপনি কোড চান যা অ্যারেলিস্ট থেকে স্ট্রিং উত্পাদন করে,
Iterate through all elements in list and add it to your String result
আপনি এটি 2 উপায়ে করতে পারেন: ফলাফল হিসাবে স্ট্রিং বা স্ট্রিংবফার / স্ট্রিংবুডারকে ব্যবহার করে।
উদাহরণ:
String result = "";
for (String s : list) {
result += s;
}
... তবে পারফরম্যান্সের কারণে এটি ভাল অনুশীলন নয়। স্ট্রিংবুফার (থ্রেডগুলি নিরাপদ) বা স্ট্রিংবুডার ব্যবহার করা ভাল যা স্ট্রিংগুলি যুক্ত করার পক্ষে আরও উপযুক্ত
অ্যাপাচি কমন্সের স্ট্রিং ইউটিলস লাইব্রেরির যোগদানের পদ্ধতিটি ব্যবহার করুন।
String[] stringArray = {"a","b","c"};
StringUtils.join(stringArray, ",");
অ্যারেতে কতগুলি উপাদান রয়েছে তা আপনি যদি জানেন তবে একটি সহজ উপায় এটি করছেন:
String appendedString = "" + array[0] + "" + array[1] + "" + array[2] + "" + array[3];