我试图找到一个解决方案/解决方法来切片非常大的数组而不创建新的副本.这是我的问题.
假设我有一个大型的double / int,大小为1亿或更多.我在一个非常大的数组中存储了代表不同内容的许多不同数组,以显着节省内存使用量.因此,我没有100万个大小为100的阵列,而是拥有一个大小为1亿的阵列.我存储索引(开始和停止)以跟踪我的数据.
我希望得到数千个大小为100的切片.如果我使用方法Arrays.copyOfRange()来获取切片,它就会失败将所有内容放在一个大型数组中的目的,因为每个切片都是一个耗尽内存的新副本.
我有遗留代码(多年来写的超过100万行),它使用自己的数据(较小的数组).无法修改现有代码以使用大型数组中的索引(开始,结束).
如果我能以某种方式返回原始数组,使得返回的数组是一个引用(或假装是),其中索引0是原始大数组中的某个任意索引,它会很棒.
在C/C++中,我可以轻松返回一个指针,该指针具有调用代码可以使用的特定偏移量和长度.
我在Java中的选择是什么?
编辑:我查看了以下类似问题,但它不包含对我的问题的回复.
How to get a sub array of array in Java, without copying data?
最佳答案 您最好的选择是将切片的索引存储在单独的结构中,例如存储这些索引的数组.
这样,您就不会将大型数组实例化为整个数据数组的分区.