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 个字段:

  • 引用外部列表
  • 抵消
  • 尺寸
  • 模数

因此,每个子列表将消耗大约 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 回答