我正在寻找一种返回数组片段的Java方法.一个例子是获取包含字节数组的第4和第5个字节的字节数组.我不想在堆内存中创建一个新的字节数组来做到这一点.现在我有以下代码:
doSomethingWithTwoBytes(byte[] twoByteArray);
void someMethod(byte[] bigArray)
{
byte[] x = {bigArray[4], bigArray[5]};
doSomethingWithTwoBytes(x);
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以做到doSomething(bigArray.getSubArray(4, 2))
4是偏移量,2是长度,例如.
我试图找到一种在不创建新副本的情况下切片超大型阵列的解决方案/解决方法。这是我的问题。
假设我有大量的double / int,大小都在1亿或更多。我将代表不同事物的许多不同数组存储在一个非常大的数组中,以大大节省内存使用量。因此,我没有一个大小为100的一百万个数组,而是一个大小为一亿的单个数组。我存储索引(开始和停止)以跟踪我的数据。
我想获得数千个大小为100的切片。如果我使用Arrays.copyOfRange()方法获取切片,则由于将每个切片都是消耗内存的新副本,因此无法实现将所有内容放入单个大数组的目的。
我有一些遗留代码(多年来,许多人写了超过一百万行),它们可以处理自己的数据(较小的数组)。不可能修改现有代码以在大型数组中使用索引(开头,结尾)。
如果我能以某种方式返回原始数组,使得返回的数组是一个引用(或假装为),其中索引0是原始大型数组中的某个任意索引,那将很棒。
在C / C ++中,我可以轻松地返回具有特定偏移量和长度的指针,调用代码可以使用该偏移量和长度。
我在Java中有哪些选择?
编辑:我看了以下类似的问题,但它不包含对我的问题的答复。 如何在Java中获取数组的子数组而不复制数据?