Java - 将给定的小数组粘贴到指定位置(或间隔)的另一个更大的数组中

时间:2014-01-22 16:39:42

标签: java arrays matlab copy

我想在Java中的指定位置(或间隔)将给定的小数组粘贴到另一个更大的数组中:

int[] bigger_array = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] smaller_array = { 1, 2, 3 };

是否存在一个简单的Java方法(matlab很简单),它可以帮助我粘贴“smaller_array”,例如在第2位(更大),以便“greater_array”变量成为:

{ 0, 0, 1, 2, 3, 0, 0, 0, 0 };

请不要使用简单的“for”粘贴方法。我想知道是否存在优化方法。

4 个答案:

答案 0 :(得分:3)

您可以使用System.arraycopy

public static void arraycopy(
   Object src, int srcPos, Object dest, int destPos, int length)
     

从指定的源数组复制数组,从   指定的位置,到目的地的指定位置   阵列。从源复制数组组件的子序列   src引用的数组到dest引用的目标数组。   复制的组件数等于length参数。该   源中位置srcPossrcPos+length-1的组件   数组被复制到destPosdestPos+length-1的位置,   分别为目标数组。

请注意,System类的文档说明(强调添加):

  

System类提供的功能包括标准输入,   标准输出和错误输出流;外部访问   定义的属性和环境变量;一种加载文件的方法   和图书馆;和实用程序方法,用于快速复制的一部分   一个数组。

这是一个exaple及其输出:

import java.util.Arrays;

public class ArrayCopyDemo {
    public static void main(String[] args) {
        int[] bigger_array = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
        int[] smaller_array = { 1, 2, 3 };
        // start copying from position 1 in source, and into 
        // position 3 of the destination, and copy 2 elements.
        int srcPos = 1, destPos = 3, length = 2;
        System.arraycopy(smaller_array, srcPos, bigger_array, destPos, length );
        System.out.println( Arrays.toString( bigger_array ));
    }
}
[0, 0, 0, 2, 3, 0, 0, 0, 0]

要复制整个数组,只需将0用作srcPos,将src.length用作length(其中src是源数组;在这种情况下,你会使用smaller_array.length)。

答案 1 :(得分:1)

您可以使用System.arraycopy(...)。重用你的例子:

int[] bigger_array = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] smaller_array = { 1, 2, 3 };

你可以这样做:

System.arraycopy(smaller_array, 0, bigger_array, 2, 3 );

最终,您的bigger_array已修改,现在包含您所追踪的{ 0, 0, 1, 2, 3, 0, 0, 0, 0 }

答案 2 :(得分:0)

使用它

public static void arraycopy(Object src,
             int srcPos,
             Object dest,
             int destPos,
             int length)
  

System.arraycopy(smaller_array,from_position,greater_array,to_position,smaller_array.length);

答案 3 :(得分:0)

我会选择System.arraycopy

int[] bigger_array = { 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int[] smaller_array = { 1, 2, 3 };      
System.arraycopy(smaller_array, 0, bigger_array, 2, 3 );
System.out.println(Arrays.toString(bigger_array));