java - 三维数组的替代方案

标签 java android arrays arraylist

我的 Floyd-Warshall 算法使用三维数组。但问题是,当我使用超过 100 的大小时,内存不足。

float[100][100][100] array= new float[100][100][100];

所以我正在考虑替代方案。一种是使用二维Float并将它们存储在ArrayList中。但这根本不起作用,因为我在 Float 的初始化时遇到了麻烦,它是 null 而不是 0,因此结果是 false。我不想再次更改我的代码,因为它也非常适合并行性。 那么是否有可能使用其他数据结构来存储值?

最佳答案

数组是对象,因此您不限于使用包装类型。您可以创建一个 float[][] 的数组列表。

无论如何,100x100x100 = 1000 000 个 float 应该占用大约 4 MB 的内存。这并不是什么都没有,但内存量似乎并不算大得不合理。您确定问题不在其他地方吗?您是否有可能保留不再需要的对象并可能被垃圾收集?

关于java - 三维数组的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18735156/

相关文章:

android - 自定义滑动动画(倾斜、卡片组、3D 等)

android - ImageView 无法使用布局权重调整大小

php - 如何将数组插入MySql数据库

javascript - Typescript 数组对象过滤器

php - 按另一个数组的顺序对关联数组的数组进行排序,其中数组的长度不同

java - Spring 在文件名中提供带点的静态内容

java - java中实现RC5加密

java - 使用 Intent 导航后重新加载 MainActivity

java - 如何从监视器线程中断另一个线程

Android 期望 android.support.v4.app.Fragment 为 CameraFragment 子类