在Java中复制对象数组的一部分

时间:2014-07-25 04:52:26

标签: java

如果我在Java Car[] a = {0,1,2,3,4,5,6,7}中有一个对象数组。如何从索引2到7复制此数组?

我想过制作一个for循环

Car[] b = new Car[a.length - 2];

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

使用Java内置的一些库还有另外一种方法吗?如果存在,它会比我提出的for循环更有效还是更低效?

7 个答案:

答案 0 :(得分:5)

您可以使用copyOfRange类的Arrays来复制某些范围。

<强>样品:

Arrays.copyOfRange(b, 2, 7);

方法implementation

copyOfRange(T[] original,
              int from,
              int to)

答案 1 :(得分:4)

您可以使用Arrays类:

b = Arrays.copyOfRange(a, 2, 7);

答案 2 :(得分:4)

System arraycopy:

System.arraycopy(a, 2, b, 0, 5);

其中b是你的目的地,从索引2开始,取5(直到位置7)

答案 3 :(得分:4)

Arrays#copyOfRange - 将指定数组的指定范围复制到新数组中。

java.util.Arrays.copyOfRange(copyFrom, startindex, endIndex);

Arrays#copyOfRange方法在内部使用System#arraycopySource for reference

或者您也可以使用系统实用程序。

System#arraycopy(Object src, int srcPos, Object dest, int destPos, int length) -

答案 4 :(得分:3)

您可以使用

Car[] splitArray = Arrays.copyOfRange(a, starting_index, end_index);

答案 5 :(得分:2)

  

如果我在Java Car []中有一个对象数组a = {0,1,2,3,4,5,6,7}。如何从索引2到7复制此数组?

使用其中一种Arrays.copyOfRange()方法,例如Arrays.copyOfRange(T[], int, int)

Car[] b = Arrays.copyOfRange(a, 2, 7);

来自Javadoc,

  

将指定数组的指定范围复制到新数组中。

也可以使用System.arraycopy(Object,int,Object,int,int)

Car[] b = new Car[a.length - 2];
System.arraycopy(a, 2, b, 0, b.length);

它的Javadoc,

  

将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。

答案 6 :(得分:1)

Arrays的CopiesofRange()似乎是一种推荐的方法,可以将指定范围的副本复制到另一个数组中。

签名

public static <T> T[] copyOfRange(T[] original,
                  int from,
                  int to)

T是通用的,可以被任何类或主要类型的变量替换。