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- StringBuilderadalah 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 StringBuilderdalam 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.8Anda 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 Iterabledan Iteratorparameter) 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.
nullakan 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 atipe 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];