我想在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”粘贴方法。我想知道是否存在优化方法。
答案 0 :(得分:3)
您可以使用System.arraycopy:
public static void arraycopy( Object src, int srcPos, Object dest, int destPos, int length)
从指定的源数组复制数组,从 指定的位置,到目的地的指定位置 阵列。从源复制数组组件的子序列 src引用的数组到dest引用的目标数组。 复制的组件数等于length参数。该 源中位置
srcPos
到srcPos+length-1
的组件 数组被复制到destPos
到destPos+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));