Java 在不使用ArrayList的情况下创建具有原始数组的重复元素的数组?

Java 在不使用ArrayList的情况下创建具有原始数组的重复元素的数组?,java,arrays,Java,Arrays,我有一个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}; 如果可以使用循环 int origArr = {1,2,3,4}; int[] newArr

我有一个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};

如果可以使用循环

int origArr = {1,2,3,4};
int[] newArr = new int[n*origArr.length];    // default initialized with zero in Java

int i=0;    // loop over new array
int j=0;    // loop over original array
while(j<origArr.length){
  for(int k=0; k<n; k++){
    newArr[i] = origArr[j];
    i++;
  }
  j++;
}
intorigar={1,2,3,4};
int[]newArr=newint[n*origArr.length];//默认值在Java中初始化为零
int i=0;//循环新阵列
int j=0;//在原始阵列上循环
而(j您可以使用streams:)

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

int[] result = new int[arr.length * n];
for (int i = 0 ; i < result.length ; i++) {
    result[i] = arr[i / n];
}
int[]结果=新的int[arr.length*n];
for(int i=0;i< /代码>请同样地添加你的解决方案,你需要一个原始整数数组输入/输出,还是将<代码>整数[]/C++ >也可以接受?你应该遵循java命名约定:变量名总是用CAMELSE编写的。更新,谢谢!这看起来更好:-)
.flatMap(x->IntStream.range(0,n).map(e->x))
可以避免无限流+限制但是应该避免无限流+限制有什么原因吗?无限流+极限,至少对我来说更自然@欧内斯特:这很美。我想发布一些看起来更好的东西,但我放弃了:D@Sweeper-我可能还是那样想的。但不久前我看到这篇文章后,我开始留意:-对不起,我花了一些时间才找到那篇文章。。。
int[] result = new int[arr.length * n];
for (int i = 0 ; i < result.length ; i++) {
    result[i] = arr[i / n];
}