Java 将子数组复制到初始化数组的方法

The Java way to copy a subarray into an initialized array

outputArray[w:lastIndex] = array[v:lastIndex]

我想将一个子数组复制到另一个已经初始化的子数组中。

是否有任何内置函数可以检查:

1) 复制的元素个数相同。 2) 它不会导致 indexOutOfBoundException

在 RHS 上我可以做类似的事情:

Arrays.copyOfRange(array,v,lastIndex+1)

我不知道在 LHS 上是否可以做任何事情。

我必须使用整数数组 + 我知道它违背了数组的目的。

您可以使用 System.arraycopy :

System.arraycopy (sourceArray, sourceFirstIndex, outputArray, outputFirstIndex, numberOfElementsToCopy);

但是,如果您提供了无效参数,它确实会抛出 IndexOutOfBoundsException

如果我正确理解了你例子中的参数,你需要这样的东西:

System.arraycopy (array, v, outputArray, w, lastIndex - v);

System.arraycopy (array, v, outputArray, w, lastIndex - v + 1);

如果您希望 lastIndex 处的元素也被复制。

也许你可以使用 fill 函数。

您可以使用 System#arraycopy,它接受源数组和目标数组中起始索引的参数:

System.arraycopy(array, v, outputArray, w, lastIndex - v)

您可以使用 ArrayUtils 库的 addAll 方法

来自文档 https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/ArrayUtils.html

Adds all the elements of the given arrays into a new array.

The new array contains all of the element of array1 followed by all of the elements array2. When an array is returned, it is always a new array.

 ArrayUtils.addAll(null, null)     = null
 ArrayUtils.addAll(array1, null)   = cloned copy of array1
 ArrayUtils.addAll(null, array2)   = cloned copy of array2
 ArrayUtils.addAll([], [])         = []
 ArrayUtils.addAll([null], [null]) = [null, null]
 ArrayUtils.addAll(["a", "b", "c"], ["1", "2", "3"]) = ["a", "b", "c", "1", "2", "3"]

Parameters:
array1 - the first array whose elements are added to the new array, may be null
array2 - the second array whose elements are added to the new array, may be null
Returns:
The new array, null if both arrays are null. The type of the new array is the type of the first array, unless the first array is null, in which case the type is the same as the second array.
Throws:
IllegalArgumentException - if the array types are incompatible

  [1]: https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/ArrayUtils.html