回答:
配列の「デバッグ形式」のダンプが必要な場合:
String str = Arrays.toString(arr);
または、より細かく制御するには(Java 8より前):
StringBuilder builder = new StringBuilder();
for(String s : arr) {
builder.append(s);
}
String str = builder.toString();
(Java 8以降):
String str = String.join(",", arr);
そして、あなたがAndroidの角度から来ているなら:
String str = TextUtils.join(",", arr);
文字列の間に必要な文字がある場合は、上記の文字を変更できます。
Java 8より前のコードとほぼ同じコードが表示される場合がありますが、StringBuffer
- StringBuilder
はスレッドセーフではない新しいクラスですが、不要な同期がなくなるため、単一スレッドでのパフォーマンスが向上します。つまり、StringBuilder
99%のケースで使用した方がよい-機能的には、2つは同じです。
しないでくださいと、それにだけAPPEND文字列を使用し、+ =の答えのいくつかは、ここで示したように。これは、配列内のアイテムと同じ数の文字列オブジェクトを作成して破棄するため、GCを屋根から送信します。小さな配列の場合は違いに気付かないかもしれませんが、大きな配列の場合は桁違いに遅くなることがあります。
Arrays.toString(yourArray);
がありますが、使用したと思いますyourArray.toString();
Apache commonsを使用してくださいStringUtils.join()
。これは、パラメータとして、配列を取り(またためのオーバーロード有するIterable
とIterator
パラメータ)と呼び出しtoString()
(それがnullでない場合)は、各要素の文字列表現を取得するために、各要素に。次に、各要素の文字列表現は、区切り文字が指定されている場合は、区切り文字を挟んで1つの文字列に結合されます。
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値のスキップのサポートはありませんが、簡単に回避できます。
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 {
public static void main(String [] args) { String [] strArray = new String [] {"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
選択肢がなく、Java 6または7を使用する場合は、Divide&Conquer結合を使用する必要があります。
arrayListから文字列を生成するコードが必要です。
Iterate through all elements in list and add it to your String result
これは、2つの方法で実行できます。結果としてStringを使用するか、StringBuffer / StringBuilderを使用します。
例:
String result = "";
for (String s : list) {
result += s;
}
...しかし、これはパフォーマンス上の理由から良い方法ではありません。より良いが使用されたStringBuffer(スレッドセーフ)またはStringBuilderの文字列を追加することがより適切です
Apache CommonsのStringUtilsライブラリのjoinメソッドを使用します。
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];