文字列の配列を文字列に変換するためのJavaコードが必要です。
配列の「デバッグ形式」のダンプがほしい場合は、次のようにします。
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
はスレッドセーフではない新しいクラスですが、不要な同期がなくなるため、シングルスレッドでパフォーマンスが向上します。一言で言えば、99%のケースでStringBuilder
を使用した方がいいです - 機能的には、2つは同一です。
DON'T 文字列を使用して、ここに示す回答の一部のように+ =を付けて追加するだけです。これは、配列内の項目数と同じ数の文字列オブジェクトを作成して捨てているため、ルーフを通してGCを送信します。小さい配列の場合は違いに気付かないかもしれませんが、大きい配列の場合は桁違いに遅くなる可能性があります。
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");
以下と同じStringを生成します。
new String("Harry, Ron, Hermione");
ETA:Java 8は現在同様のサポートをしています。
String.join(", ", "Harry", "Ron", "Hermione");
Null値をスキップすることはサポートされていませんが、簡単に回避できます。
プリミティブ型の配列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();
Java 8から、私が考える最も簡単な方法は次のとおりです。
String[] array = { "cat", "mouse" };
String delimiter = "";
String result = String.join(delimiter, array);
これにより、任意の区切り文字を選択できます。
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 joinを使用してください。
String array[]={"one","two"};
String s="";
for(int i=0;i<array.length;i++)
{
s=s+array[i];
}
System.out.print(s);
Apache Commonsの StringUtils library のjoinメソッドを使用してください。
String[] stringArray = {"a","b","c"};
StringUtils.join(stringArray, ",");
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 を使用したほうがよい