Saya ingin kode Java untuk mengubah array string menjadi string.
array.toString()
? Lebih spesifik.
Saya ingin kode Java untuk mengubah array string menjadi string.
array.toString()
? Lebih spesifik.
Jawaban:
Jika Anda hanya ingin dump "debug-style" dari array:
String str = Arrays.toString(arr);
atau, untuk kontrol lebih lanjut (sebelum Java 8):
StringBuilder builder = new StringBuilder();
for(String s : arr) {
builder.append(s);
}
String str = builder.toString();
(Java 8 ke atas):
String str = String.join(",", arr);
Dan jika Anda datang dari sudut Android:
String str = TextUtils.join(",", arr);
Anda dapat memodifikasi di atas tergantung pada karakter apa, jika ada, yang Anda inginkan di antara string.
Anda mungkin melihat kode yang identik dengan kode pra-Jawa 8 tetapi menggunakan StringBuffer
- StringBuilder
adalah kelas yang lebih baru yang tidak aman untuk thread, tetapi karenanya memiliki kinerja yang lebih baik dalam satu utas karena tidak jauh dengan sinkronisasi yang tidak dibutuhkan. Singkatnya, Anda lebih baik menggunakan StringBuilder
dalam 99% kasus - fungsi bijaksana, keduanya identik.
JANGAN gunakan string dan tambahkan saja dengan + = seperti beberapa jawaban yang ditampilkan di sini. Ini mengirimkan GC melalui atap karena Anda membuat dan membuang objek string sebanyak yang Anda punya item dalam array Anda. Untuk array kecil Anda mungkin tidak benar-benar memperhatikan perbedaannya, tetapi untuk array besar itu bisa jadi urutan besarnya lebih lambat.
Arrays.toString(yourArray);
tetapi saya kira Anda menggunakanyourArray.toString();
1.8
Anda juga dapat menggunakan String::join
, alih-alih untuk-loop. String.join("", arr);
Gunakan Apache commons StringUtils.join()
. Dibutuhkan array, sebagai parameter (dan juga memiliki kelebihan untuk Iterable
dan Iterator
parameter) dan memanggil toString()
setiap elemen (jika tidak nol) untuk mendapatkan setiap representasi elemen string. Setiap representasi elemen string kemudian bergabung menjadi satu string dengan pemisah di antaranya jika ditentukan:
String joinedString = StringUtils.join(new Object[]{"a", "b", 1}, "-");
System.out.println(joinedString);
Menghasilkan:
a-b-1
Saya suka menggunakan Google's Guava Joiner untuk ini, misalnya:
Joiner.on(", ").skipNulls().join("Harry", null, "Ron", "Hermione");
akan menghasilkan String yang sama dengan:
new String("Harry, Ron, Hermione");
ETA: Java 8 memiliki dukungan serupa sekarang:
String.join(", ", "Harry", "Ron", "Hermione");
Tidak dapat melihat dukungan untuk melewatkan nilai nol, tapi itu mudah dikerjakan.
null
akan menjadi "dia yang namanya tidak boleh disebutkan" :-)
Joiner.on(", ").useForNull("Voldemort").join("Harry", null, "Ron", "Hermione");
String.join(", ", "Harry", null, "Ron", "Hermione").replaceAll("null", "Voldermart");
Anda bisa melakukan ini, mengingat larik a
tipe primitif:
StringBuffer result = new StringBuffer();
for (int i = 0; i < a.length; i++) {
result.append( a[i] );
//result.append( optional separator );
}
String mynewstring = result.toString();
Coba metode Arrays.deepToString .
Mengembalikan representasi string dari "konten dalam" dari array yang ditentukan. Jika array berisi array lain sebagai elemen, representasi string berisi isinya dan seterusnya. Metode ini dirancang untuk mengubah array multidimensi menjadi string
Coba metode kelebihan Arrays.toString .
Atau yang lain, coba penerapan umum berikut ini:
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();
}
kelas publik ArrayToString {
public static static utama (String [] args) { String [] strArray = String baru [] {"Java", "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
Jika Anda tidak memiliki pilihan tetapi untuk menggunakan Java 6 atau 7 maka Anda harus menggunakan Divide & Conquer join.
Anda ingin kode yang menghasilkan string dari arrayList,
Iterate through all elements in list and add it to your String result
Anda dapat melakukan ini dalam 2 cara: menggunakan String sebagai hasil atau StringBuffer / StringBuilder.
Contoh:
String result = "";
for (String s : list) {
result += s;
}
... tapi ini bukan praktik yang baik karena alasan kinerja. Lebih baik menggunakan StringBuffer (threads safe) atau StringBuilder yang lebih tepat untuk menambahkan Strings
Gunakan metode gabungan library 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);
Jika Anda tahu berapa banyak elemen yang dimiliki array, cara sederhana adalah melakukan ini:
String appendedString = "" + array[0] + "" + array[1] + "" + array[2] + "" + array[3];