新しいコピーを作成せずに非常に大きな配列をスライスするための解決策/回避策を見つけようとしています。これが私の問題です。
サイズが 1 億以上の double/int の大きな配列があるとします。メモリ使用量を大幅に節約するために、さまざまなものを表すさまざまな配列を 1 つの非常に大きな配列に格納しています。したがって、サイズ 100 の配列を 100 万個持つ代わりに、サイズ 1 億の単一の配列を使用します。データを追跡するためにインデックス (開始と停止) を保存します。
サイズ 100 のスライスを何千も取得したいと考えています。メソッド Arrays.copyOfRange() を使用してスライスを取得すると、すべてを 1 つの大きな配列に入れるという目的が無効になります。各スライスはメモリを消費する新しいコピーだからです。
独自のデータ (より小さな配列) で動作するレガシー コード (長年にわたって多くの人々によって書かれた 100 万行を超えるコード) があります。大きな配列のインデックス (begin、end) を操作するように既存のコードを変更することはできません。
インデックス 0 が元の大きな配列の任意のインデックスである参照 (またはそのふりをする) が返されるように元の配列を返すことができれば、それは素晴らしいことです。
C/C++ では、呼び出し元のコードが機能する特定のオフセットと長さを持つポインターを簡単に返すことができます。
Java でのオプションは何ですか?
編集:次の同様の質問を見ましたが、質問への回答が含まれていません。 データをコピーせずに、Javaで配列のサブ配列を取得する方法は?