在Java中,有没有像数组一样工作但占用更少的内存?

时间:2014-04-11 03:39:27

标签: java arrays genetic-algorithm

我正在编程遗传算法。现在,我使用数组来处理所有事情:我的个体由int数组组成,我的人口是个体数组,我将信息存储在数组中以跟踪它。

我遇到的一个巨大限制是内存不足。我知道GA是内存密集型的,但我想知道我的第一步应该是通过使用比数组更好的东西来进行简单的更改。

2 个答案:

答案 0 :(得分:0)

这个问题的答案在很大程度上取决于数据的性质。

如果您有稀疏数据(大多数是0和非常少的1或反之亦然),那么创建一个1的索引数组可能会为您提供帮助。正如David Wallace所提到的,索引的HashSet将允许您快速检查特定索引是1还是0。

如果您没有稀疏数据,那么您可能需要BitSet。

discussion可能对您提供输入也很有用。

答案 1 :(得分:0)

您可以将三元组放入一个整数。

G = 0001

A = 0010

T = 0011

C = 0100

U = 0101(RNA)

N = 0111(G或C)

Q = 1000(A或T / U)

...

3 x 4位适合一个32位int。三联体很适合遗传背景。 编写一个Helper类来编码/解码基数并将其添加到列表数组中。考虑初始大小和负载因子。