将阵列拆分为不同大小的块

时间:2014-04-03 08:20:34

标签: java arrays

我有一个包含6个元素A [0,1,2,3,4,5]的数组,我有另外3个元素B [2,1,3]。

我想根据数组B中的值将数组A拆分为3个块,如下所示: 阵列[0,1] 阵列[2] 阵列[3,4,5]

然后我要创建第三个数组,它接受每个新数组的元素0并创建一个新数组,如下所示:

新数组[0,2,3]

任何人都可以告诉我如何做到这一点吗?

2 个答案:

答案 0 :(得分:1)

这次你走了。但是下次,正如Rohit Jain所说,做一些研究,试试你的。您不会通过将任务委派给他人来学习如何编程或思考逻辑。

功能

public int[] foo(final int[] values, final int[] sizes) {
    final int[] results = new int[sizes.length];
    int         index  = 0;

    for (int i = 0; i < sizes.length; i++) {
        if (index > values.length)
            break;

        results[i]  = values[index];
        index     += sizes[i];
    }

    return results;
}

示例电话:

final int[] values     = new int[] {0, 1, 2, 3, 4, 5,};
final int[] sizes      = new int[] {2, 1, 3};

final int[] fooedArray = foo(values, sizes);

答案 1 :(得分:0)

如果您只对最终结果感兴趣,则不需要创建中间数组,只需使用索引和数组循环:

int[] a = new int[] { 0, 1, 2, 3, 4, 5 };
int[] b = new int[] { 2, 1, 3 };

int indexA = 0;
int indexB = 0;
int[] result = new int[b.length];
while (indexA < a.length && indexB < b.length) {
    result[indexB] = a[indexA];
    indexA += b[indexB];
    indexB++;
}
for (int r : result) {
    System.out.println(r);
}