2

Java に配列があり、int[] A = new int[100000]何百万ものサブ配列を作成したいと考えていますA。C++ では、ポインターの配列を使用します。メモリを消費しすぎないように、要素への参照を作成ArrayList<Integer> subAして保存できますか? A現時点でint[] subA = new int[some value less than A.length]は、非常に高価でメモリ不足になるオブジェクトを作成しています。

4

2 に答える 2

5

List.subList()つまり、元のリストのビューを作成します。サブリストには次の 4 つのフィールドしかないため、おそらくそれを使用してメモリを節約できます。

  • 外部リストへの参照
  • オフセット
  • サイズ
  • modCount

したがって、各サブリストは 20 バイト程度を消費します。

于 2013-04-16T13:19:42.403 に答える
0

Javaにはポインターの概念がないため、整数のリストを使用して他のオブジェクトを参照することはできませんが、できることは次のとおりです。

List<List<Integer>> l = new ArrayList<List<Integer>>();

l.add(new ArrayList<Integer>()) // add a list which will hold integers as a reference in your main list.

メモリが不足している場合は、JVM により多くのヒープ メモリを割り当てる必要があります。JVM に渡すことができる -Xmx 起動パラメーターを確認してください。

于 2013-04-16T13:18:30.700 に答える