如果我在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循环更有效还是更低效?
答案 0 :(得分:5)
您可以使用copyOfRange
类的Arrays
来复制某些范围。
<强>样品:强>
Arrays.copyOfRange(b, 2, 7);
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#arraycopy
。 Source 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是通用的,可以被任何类或主要类型的变量替换。