5

ArrayList<Integer>在我的研究项目中使用。我需要在此列表中保留未知数量的整数。有时我需要更新列表:删除现有记录或添加新记录。作为Integer一个对象,它比 only 占用更多的内存int。是否有任何替代方法来维护将消耗更少内存的列表Integer

4

4 回答 4

5

尝试一种针对内存使用优化的整数列表实现,例如Colt 库中的一个:

http://acs.lbl.gov/software/colt/api/cern/colt/list/IntArrayList.html

Java Integer 对象通常需要比 int 原语更多的开销,因此您需要一个空间优化的实现。

柯尔特

例如,在 CERN 进行的科学和技术计算的特点是对问题规模的要求很高,并且需要在相当小的内存占用下获得高性能。[...]

于 2012-10-06T20:36:28.717 回答
0

您还应该考虑另一种存储系统ArrayList。至于链接机制,每个元素都有一个开销(有时)消耗更多的内存作为值本身。也许您不需要订购它们。如果适用或实现自己的数据结构,您是否考虑过Map一个简单的 oder ?Set

于 2012-10-08T12:22:51.757 回答
0

这取决于您使用的语言,但我认为它是 Java。在 Java 中,您可能知道,不能在 ArrayList 中使用整数,因为它们是原始数据类型。要使用整数,您必须使用固定大小的常规数组。这意味着每次添加内容时都需要创建一个更大的新数组,假设元素数量大于数组。你用内存来换取复杂性,因为你必须编写更多的代码,并且来回移动整数。

减少的内存使用不太可能值得付出努力,并且在实施这种解决方案时存在额外的错误风险。

于 2012-10-06T20:35:00.730 回答
0

您可以使用带有 int-s 的数组并使用与 ArrayList 相同的逻辑编写自己的方法。但是 IMO 这是一个坏主意 - 现代机器有足够的内存来使用 Integer 对象,相信我...... :)

于 2012-10-06T20:33:12.163 回答