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

如何按相同索引分组合并三个Java数组

按索引分组合并多个Java数组的修正方案

你当前的代码只是将三个数组顺序拼接,而非按索引分组提取元素合并。要实现按相同索引分组(依次取每个数组的第i个元素放入结果),需要调整元素在结果数组中的位置计算逻辑。

情况1:所有数组长度相同

如果能确定三个数组长度一致,直接遍历索引,按分组计算结果数组的位置即可:

public class MergeArraysByIndex {
    public static void main(String[] args) {
        int a[] = {1,2,3,4};
        int b[] = {5,6,7,8};
        int c[] = {9,10,11,12};
  
        int elementCountPerGroup = 3; // 参与分组的数组数量
        int groupCount = a.length; // 每组对应一个索引,数量等于数组长度
        int[] d = new int[groupCount * elementCountPerGroup];

        for (int i = 0; i < groupCount; i++) {
            // 计算当前组在结果数组中的起始位置
            int startPos = i * elementCountPerGroup;
            d[startPos] = a[i];
            d[startPos + 1] = b[i];
            d[startPos + 2] = c[i];
        }

        // 输出结果
        for (int num : d) {
            System.out.print(num + " ");
        }
    }
}

这段代码的核心是:每个索引i对应结果数组中的连续3个位置(i*3、i*3+1、i*3+2),分别存放a、b、c数组的第i个元素,最终得到按索引分组的合并结果。

情况2:数组长度可能不同

如果数组长度不一致,需要先取最大长度作为循环上限,同时避免数组越界:

public class MergeArraysByIndex {
    public static void main(String[] args) {
        int a[] = {1,2,3,4,13};
        int b[] = {5,6,7,8};
        int c[] = {9,10,11,12,14,15};
  
        int maxLength = Math.max(Math.max(a.length, b.length), c.length);
        int[] d = new int[a.length + b.length + c.length];
        int currentIndex = 0;

        for (int i = 0; i < maxLength; i++) {
            // 依次检查每个数组是否还有当前索引的元素,有则放入结果数组
            if (i < a.length) {
                d[currentIndex++] = a[i];
            }
            if (i < b.length) {
                d[currentIndex++] = b[i];
            }
            if (i < c.length) {
                d[currentIndex++] = c[i];
            }
        }

        // 输出结果
        for (int num : d) {
            System.out.print(num + " ");
        }
    }
}

这种方式会按索引顺序,依次提取每个数组的对应元素,直到所有数组的元素都被合并完成,即使数组长度不同也能正确处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:15:30