首页 > 解决方案 > 在不使用 ArrayList 的情况下创建具有原始数组重复元素的数组?

问题描述

我有一个Java数组。

// original array
int[] arr = {1, 2, 3, 4};

如何获得另一个数组,该数组在原始元素旁边有原始数组的重复元素n次,像这样......

// n = 2
int[] arr2 = {1, 1, 2, 2, 3, 3, 4, 4};

// n = 3
int[] arr3 = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4};

标签: javaarrays

解决方案


您可以使用流:)

int[] result = Arrays.stream(arr)
                .flatMap(x -> IntStream.range(0, n).map(e -> x))
                .toArray();

因为这看起来像是一项家庭作业要求,所以您不太可能被允许使用流,所以这里有一个带有 for 循环的解决方案:

int[] result = new int[arr.length * n];
for (int i = 0 ; i < result.length ; i++) {
    result[i] = arr[i / n];
}

推荐阅读