【发布时间】:2013-09-11 07:29:09
【问题描述】:
我的 Floyd-Warshall 算法使用三维数组。但问题是我的内存不足,当我使用超过 100 的大小时。
float[100][100][100] array= new float[100][100][100];
所以我在考虑替代方案。一种是使用二维 Float 并将它们存储在 ArrayList 中。但这根本不起作用,因为我在初始化 Float 时遇到了麻烦,它是 null 而不是 0,因此结果是错误的。我不想再次更改我的代码,因为它也非常适合并行性。 那么是否有可能使用另一种数据结构来存储值?
【问题讨论】:
-
如果您的内存不足,那么整个事情都需要修改。事实是,在 Android 设备上,此资源是有限的(还考虑到每个维度上 100 个的三维数组)。另一件事是使用动态数组(长度不完全为 100,但如果这是您需要的,您可能需要考虑将计算移到设备之外)。您还可以粘贴到目前为止所做的事情..
-
你真的内存不足了吗?我已经填满了你的整个数组,整个程序只需要 19 MiB RAM。问题出在哪里?
-
100 只是一个例子,但有时我可能需要 1000x1000x1000 而那是不可能的。无论如何,我实际上是在考虑使用这个 ArrayLists,因为如果我不再需要它们,我可以删除 List 条目。这将减少内存并可以帮助我运行我的算法。但正如我提到的,它不适用于我的算法。问题是 null、0 的东西,也许还有其他不适合 Float 的东西。
标签: java android arrays arraylist