You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何拼接多个Java String数组?现有拼接代码填充数组错误如何修正?

问题分析
  • 核心逻辑错误:System.arraycopy的第四个参数(目标数组的起始写入位置)设置错误。你当前传入的是前一个数组的单独长度,仅在合并2个数组时能正常工作,合并3个及以上数组时,写入位置没有累计前面所有数组的总长度,会出现内容覆盖、数据丢失的问题。
  • 边界异常风险:没有处理传入的arrays为空列表的情况,此时调用arrays.get(0)会直接抛出IndexOutOfBoundsException。
修正后的代码
import java.util.ArrayList;
import java.util.Arrays;

private static String[] concat(ArrayList<String[]> arrays)
{
    // 处理空列表边界
    if (arrays.isEmpty()) {
        return new String[0];
    }

    int totalLength = 0;
    for (String[] array : arrays) {
        totalLength += array.length;
    }

    String[] result = new String[totalLength];
    // 记录当前写入的起始偏移量
    int currentOffset = 0;
    for (String[] array : arrays) {
        System.arraycopy(array, 0, result, currentOffset, array.length);
        currentOffset += array.length;
    }

    return result;
}
修正说明
  • 新增空列表判断,避免索引越界异常
  • 新增currentOffset变量累计已写入的总长度,每次复制数组时将该值作为目标起始位置,复制完成后累加当前数组的长度,保证后续写入位置正确
  • 简化循环逻辑,不需要单独处理第一个数组,所有数组统一走复制逻辑,减少出错概率

内容的提问来源于stack exchange,提问作者ShiningLea

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 13:15:06