在Java中获取数组的段,而不在堆上创建新的数组

问题:

我正在寻找Java中的方法,它将返回数组的一个段。一个例子是获取包含字节数组的第4和第5个字节的字节数组。我不想在堆内存中创建一个新的字节数组,只是为了做到这一点。现在我有以下代码:

doSomethingWithTwoBytes(byte[] twoByteArray);

void someMethod(byte[] bigArray)
{
      byte[] x = {bigArray[4], bigArray[5]};
      doSomethingWithTwoBytes(x);
}

我想知道是否有办法只做doSomething(bigArray.getSubArray(4, 2)),其中4是偏移量,2是长度,例如。

回答:

免责声明:此答案不符合问题的限制:

我不想在堆内存中创建一个新的字节数组,只是为了做到这一点。

 Honestly, I feel my answer is worthy of deletion. The answer by @unique72 is correct. Imma let this edit sit for a bit and then I shall delete this answer.
我不知道直接使用数组的方法,而不需要额外的堆分配,但是使用子列表包装器的其他答案仅对包装器有额外的分配 – 但不是数组-xa0,这对于一个大阵列。
也就是说,如果一个人正在寻找简洁,那么在Java 6(2006年末??)中引入了实用方法Arrays.copyOfRange()

byte [] a = new byte [] {0, 1, 2, 3, 4, 5, 6, 7};

// get a[4], a[5]

byte [] subArray = Arrays.copyOfRange(a, 4, 6);

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Grab a segment of an array in Java without creating a new array on heap

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

25 − 19 =