用另一个数组中的元素填充数组

时间:2018-07-20 17:22:38

标签: java arrays element fill

嘿,我想用另一个数组中的元素填充一个数组。 例如(下) 并且数组b应该以数组b中的顺序填充元素。 有什么方法吗?我只知道Arrays.fill(但这是1个元素)。 表a是可变的,不是静态的!

int a[1,2,3,4];

int b[] = new int[100];
int b[] = {1,2,3,4,1,2,3,4,...}

4 个答案:

答案 0 :(得分:2)

您可以使用Traceback (most recent call last): File "/Users/edamame/workspace/git/chinese_nlp/chinese_segmenter1.py", line 6, in <module> from getpwnam import pwd ModuleNotFoundError: No module named 'getpwnam' Process finished with exit code 1 方法。它将源数组从特定的开始位置复制到目标位置,从提到的位置复制。

例如复制数组25次以填充b。

System.arraycopy()

答案 1 :(得分:0)

我可以想象一个简单的for循环在第一个数组中循环并添加到第二个数组中,这是一个基本的解决方案,而无需调用您可能不熟悉的方法。

    int a[1,2,3,4];
    int b[]  = new int[100];
    int j = 0;
    for (int i = 0; i < b.length; i++) 
    {
       if(j == 4) 
       { 
           j = 0; 
       }
       int n = a[j];
       b[i] = n;
       j++; 
    }

或者如果数组“ a”的大小发生变化,也可以检查数组长度

    int a[1,2,3,4];
    int b[]  = new int[100];
    int j = 0;
    for (int i = 0; i < b.length; i++) 
    {
       if(j == a.length) 
       { 
           j = 0; 
       }
       int n = a[j];
       b[i] = n;
       j++; 
    }

答案 2 :(得分:0)

这是使用Streams的一种方法

int b[] = Stream.iterate(0, i -> i == a.length - 1 ? 0 : i + 1)
            .limit(100)
            .mapToInt(i -> a[i])
            .toArray();

Stream.iterate(0, i -> i == a.length - 1 ? 0 : i + 1): 以0开头作为种子,并逐渐生成整数流。一旦索引到达数组的末尾,我们将重置/重新启动。

limit(100):由于流的源是无限的,因此限制为100个元素。

.mapToInt(i -> a[i]):通过从数组 a 中获取 index 处的元素,将传入的Integer index 转换为int。 / p>

.toArray():将各个元素收集到int[]中。

答案 3 :(得分:0)

您可以使用for循环和模运算符完成此操作:

    for (int i = 0; i < b.length; i ++) {
        b[i] = a[i % a.length];
    }