我正在尝试找到一种解决方案/解决方法,用于在不创建新副本的情况下对超大数组进行切片。这是我的问题。
假设我有一个大小为 1 亿或更多的 double/int 数组。我将许多表示不同事物的不同数组存储在一个非常大的数组中,以显着节省内存使用量。因此,我有一个大小为 1 亿的数组,而不是每个大小为 100 的 100 万个数组。我存储索引(开始和停止)以跟踪我的数据。
我想获得数千个大小为 100 的切片。如果我使用 Arrays.copyOfRange() 方法来获得切片,它就违背了将所有内容放在一个大数组中的目的,因为每个切片都是一个占用内存的新副本。
我有遗留代码(许多人多年来编写的超过 100 万行代码)可以处理自己的数据(较小的数组)。无法修改现有代码以使用大型数组中的索引(开始、结束)。
如果我能以某种方式返回原始数组,使得返回的数组是一个引用(或假装是),其中索引 0 是原始大数组中的某个任意索引,那就太好了。
在 C/C++ 中,我可以轻松地返回一个具有特定偏移量和长度的指针,调用代码可以使用该指针。
我在 Java 中有哪些选择?
编辑:我查看了以下类似的问题,但它不包含对我的问题的回复。 如何在不复制数据的情况下在 Java 中获取数组的子数组?