【问题标题】:How to concatenate string arrays in Java如何在 Java 中连接字符串数组
【发布时间】:2012-11-17 23:11:30
【问题描述】:

我想知道如何在 Java 中连接 4 个字符串数组。

已经有一个关于这个的问题。 How can I concatenate two arrays in Java?

但我尝试复制它,但它对我不起作用。

这是我的代码的样子:

调用方法:

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;
}

【问题讨论】:

  • 我在这里有点困惑。什么是样本输入和样本输出?
  • 这怎么没有关闭? Double Duplicate

标签: java arrays


【解决方案1】:

撇开检查数组是否为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;
    }

【讨论】:

  • 谢谢。不过还是有点困惑......然后我是否会调用 generalConcatAll 4 次并传入每个作业数组?
  • 或者我是否调用一次并为每个作业数组运行一次​​ for 循环 4 次?
  • 没有。 concatAll 方法的主体为您提供答案 - 您将每个作业数组作为单独的参数传递。
  • @TríonaLounds 您可能想了解Varargs
【解决方案2】:

这更简洁一些,并使用 Apache Commons Lang 库正确处理所有 null 案例。 ArrayUtils.addAll(T[], T...)

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

    String[] result = null;

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

    return result;

}

【讨论】:

    猜你喜欢
    • 2014-06-10
    • 2015-01-08
    • 2016-06-26
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 1970-01-01
    相关资源
    最近更新 更多