9

Javaで4つの文字列配列を連結するにはどうすればよいのでしょうか。

これについてはすでに質問があります。 Javaで2つの配列を連結するにはどうすればよいですか?

しかし、私はそれを複製しようとしましたが、それは私にとってはうまくいきません。

これは私のコードがどのように見えるかです:

メソッドの呼び出し:

concatAll(jobs1, jobs2, jobs3, jobs4);

メソッド自体:

public String[] concatAll(String[] jobsA, String[] jobsB, String[] jobsC, String[] jobsD) {
    int totalLength = jobsA.length;
    for (String[] array : jobsD) {
        totalLength += array.length;
    }

    String[] result = Arrays.copyOf(jobsA, totalLength);

    int offset = jobsA.length;

    for (String[] array : jobsD) {
        System.arraycopy(array, 0, result, offset, array.length);
        offset += array.length;
    }
    return result;
}
4

2 に答える 2

16

配列がであるかどうかを確認するなどのことはさておき、次のように、配列nullの一般的なメソッドを作成して、特定の場合に使用できます。

    public String[] concatAll(String[] jobsA, String[] jobsB, String[] jobsC, String[] jobsD) 
    {
        return generalConcatAll (jobsA, jobsB, jobsC, jobsD);
    }

    public String[] generalConcatAll(String[]... jobs) {
        int len = 0;
        for (final String[] job : jobs) {
            len += job.length;
        }

        final String[] result = new String[len];

        int currentPos = 0;
        for (final String[] job : jobs) {
            System.arraycopy(job, 0, result, currentPos, job.length);
            currentPos += job.length;
        }

        return result;
    }
于 2012-11-17T23:19:04.563 に答える
4

これはもう少し簡潔で、nullApacheCommonsLangライブラリを使用してすべてのケースを正しく処理します。ArrayUtils.addAll(T[], T...)

public String[] generalConcatAll(String[]...arrays) {

    String[] result = null;

    for(String[] array : arrays) {
         result = ArrayUtils.addAll(result, array);
    }

    return result;

}
于 2014-03-13T14:53:19.010 に答える