我有一个 Java 数组int[] A = new int[100000]
,我想创建数百万个A
. 在 C++ 中,我会使用指针数组。我可以创建ArrayList<Integer> subA
和存储对元素的引用,A
这样我就不会消耗太多内存。目前,我确实创建int[] subA = new int[some value less than A.length]
了非常昂贵且内存不足的对象。
问问题
617 次
2 回答
5
List.subList()
这样做:它在原始列表上创建一个视图。您可能会通过使用它来节省内存,因为子列表只有以下 4 个字段:
- 引用外部列表
- 抵消
- 尺寸
- 模数
因此,每个子列表将消耗大约 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 回答