首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整数链表的链表。

整数链表的链表。
EN

Stack Overflow用户
提问于 2012-09-18 21:48:47
回答 4查看 3.9K关注 0票数 2

我第一次遇到问题是试图为一个字典间隙列表发布程序创建一个非常大的int (7k X 30k)。但是,遗憾的是,我在尝试分配数组时耗尽了空间。如何创建一个2-d整数数组?

我想要的是一个列表列表,其中列表中的每个列表都是一个整数列表。以下是我的代码示例。

代码:

代码语言:javascript
复制
 static final int numberOfTerms = 6782;
 static final int numberOfLines = 30383;
 byte[][] countMatrix = new byte[numberOfLines][numberOfTerms];
 int[][] gapsMatrix = new int[numberOfLines][numberOfTerms]; // To big!!

这个列表列表将用整数填充,这些整数表示同一单词在特定文本中的两次出现之间的间隔。因此,在计数矩阵中,我保存了一个字节,指示是否为指定的索引指定了一个字。然后在我现在创建的函数中,我正在遍历countMatrix,如果我在那里找到一个字节,我取当前索引减去最后找到的索引,并将该数字保存在整数的2D数组中,这给出了文本中每个相同单词之间的间距。

那么,我该如何创建完成此任务所需的数据结构呢?

EN

回答 4

Stack Overflow用户

发布于 2012-09-18 22:03:34

我不知道这是否适用于你,但是如果你想坚持使用数组,你可以尝试Sparse Matrix as选项。还有其他几个选项。MapListWeak reference Collections

票数 1
EN

Stack Overflow用户

发布于 2012-09-18 22:05:16

要创建数组,您需要有足够的内存来创建它。

对于每个值,int使用4个字节,而数组至少使用N*M倍。

例如,4* 30383 * 6782大约是820MB,你需要有空闲空间才能创建它。

这大约是8美元的内存,所以这应该是一个很大的问题,除非你没有这么多内存,或者你把最大内存设置得太低。

我会增加你的最大内存至少1 GB,它应该可以工作。

替代方案包括

  • 使用较小的大小,例如charshortbyte,小2-4倍。
  • 使用堆内存,如内存映射文件。这不会使用太多堆,但会使用磁盘空间,这通常是您的最大内存大小。
票数 1
EN

Stack Overflow用户

发布于 2012-09-18 21:59:04

你只是没有足够的内存来做到这一点。

http://www.javamex.com/tutorials/memory/array_memory_usage.shtml

抱歉,我没有说清楚,但是,使用另一个DS不太可能改变这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12478372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档