Java文字列配列から文字列へ

今日は、JavaのString配列をStringに変換する方法について見ていきます。時には、特定の要件に合わせてString配列をStringに変換する必要があります。たとえば、配列の内容をログに記録したい場合や、String配列の値をStringに変換して他のメソッドを呼び出す必要がある場合などです。

JavaのString配列をStringに変換する方法

ほとんどの場合、オブジェクトのtoString()メソッドを呼び出して、Stringの表現を取得します。では、JavaでString配列に対してtoString()メソッドを呼び出した場合に何が起こるか見てみましょう。

package com.journaldev.util;

public class JavaStringArrayToString {

	public static void main(String[] args) {
		String[] strArr = new String[] {"1","2","3"};
		
		String str = strArr.toString();
		
		System.out.println("Java String array to String = "+str);
	}

}

以下の画像は、上記のプログラムによって生成される出力を示しています。上記の出力の理由は、配列に対するtoString()呼び出しがObjectのスーパークラスに移されるためです。Objectクラスでは、以下のように実装されています。

public String toString() {
        return getClass().getName() + "@" + Integer.toHexString(hashCode());
    }

JavaのString配列をStringに変換する例

JavaでString配列をStringに変換する方法は次のとおりです。Arrays.toStringメソッドを使用して、個々の要素のtoString()メソッドを呼び出し、StringBuilderを使用してStringを作成します。

public static String toString(Object[] a) {
    if (a == null)
        return "null";

    int iMax = a.length - 1;
    if (iMax == -1)
        return "[]";

    StringBuilder b = new StringBuilder();
    b.append('[');
    for (int i = 0; ; i++) {
        b.append(String.valueOf(a[i]));
        if (i == iMax)
            return b.append(']').toString();
        b.append(", ");
    }
}

特定の形式の要件がある場合は、String配列をStringに変換する独自のメソッドを作成することもできます。以下は、これらの方法を示す単純なプログラムと出力の例です。

package com.journaldev.util;

import java.util.Arrays;

public class JavaStringArrayToString {

	public static void main(String[] args) {
		String[] strArr = new String[] { "1", "2", "3" };

		String str = Arrays.toString(strArr);
		System.out.println("Java String array to String = " + str);

		str = convertStringArrayToString(strArr, ",");
		System.out.println("Convert Java String array to String = " + str);

	}

	private static String convertStringArrayToString(String[] strArr, String delimiter) {
		StringBuilder sb = new StringBuilder();
		for (String str : strArr)
			sb.append(str).append(delimiter);
		return sb.substring(0, sb.length() - 1);
	}
}

配列のtoString()メソッドを使用すると、無効なデータが返されます。JavaのArraysクラスは、配列の要素を反復処理し、それらのtoString()実装を使用して配列の文字列表現を返すtoString(Object[] objArr)を提供しています。したがって、この関数を使用すると、配列の内容が表示され、ログ出力に使用できます。特定の区切り記号を使用してString配列のすべての要素を結合する場合は、convertStringArrayToString(String[] strArr, String delimiter)メソッドを使用して、結合後のStringを返すことができます。

Java Array to String Example

ここでは、String配列を任意の他のカスタムクラスで使用するための例を拡張します。実装は以下の通りです。

package com.journaldev.util;

import java.util.Arrays;

public class JavaArrayToString {

	public static void main(String[] args) {
		A[] arr = { new A("1"), new A("2"), new A("3") };

		// デフォルトのtoString()メソッド
		System.out.println(arr.toString());

		// Arrays.toString()を使用してオブジェクト配列の内容を出力
		System.out.println(Arrays.toString(arr));

		// Object ArrayをStringに変換
		System.out.println(convertObjectArrayToString(arr, ","));
	}

	private static String convertObjectArrayToString(Object[] arr, String delimiter) {
		StringBuilder sb = new StringBuilder();
		for (Object obj : arr)
			sb.append(obj.toString()).append(delimiter);
		return sb.substring(0, sb.length() - 1);

	}

}

class A {
	private String name;

	public A(String name) {
		this.name = name;
	}

	@Override
	public String toString() {
		System.out.println("A toString() method called!!");
		return this.name;
	}
}

上記のJava配列をStringに変換するプログラムによって生成される出力は:

[Lcom.journaldev.util.A;@7852e922
A toString() method called!!
A toString() method called!!
A toString() method called!!
[1, 2, 3]
A toString() method called!!
A toString() method called!!
A toString() method called!!
1,2,3

これで、Java String配列をStringに変換し、それをカスタムオブジェクトで使用する方法を見てみました。これでJava配列をStringに変換するための説明は以上です。

詳細なJavaの例は、GitHubリポジトリから確認できます。

参考:Java Arrays toString API Doc

Source:
https://www.digitalocean.com/community/tutorials/java-string-array-to-string