除了Array / ArrayList之外,还有其他方法可以保存矩阵元素

时间:2015-03-05 17:41:34

标签: java arrays matrix arraylist

假设我们有如下整数:     (1, 2)=10,     (2,3)=20,     (3, 4)=30 等...

这些整数分布在一个2000*2000维的矩阵中。

但我只需要这个矩阵的4000-6000个元素及其索引(即它们的位置(i,j))。矩阵中的其他元素为零。所以我不需要它们。 除了使用二维Array / ArrayList之外,还有一个很好的方法来保存这些元素及其索引,因为我们可以轻松调用和重用元素及其索引吗?

使用Array / ArrayList消耗大量内存。

2 个答案:

答案 0 :(得分:5)

拥有这种大小的二维数组将浪费内存,因为它将拥有4,000,000个元素。因为你只需要4000-6000个元素,所以这个数组非常稀疏。

您可以使用HashMapPoint映射到Integer

Map<Point, Integer> points = new HashMap<>();

您需要确保Point课程能够正确覆盖hashcodeequals

HashMap只会存储您put的4000-6000点。

答案 1 :(得分:2)

使用HashMap的解决方案非常好而且干净,但如果你需要线性代数算法,那就不明智了。

您可以使用la4j纯java开源线性代数库。它包含稀疏矩阵实现,如Compressed Row Storage和许多矩阵算法,如排名,分解,线性系统求解等等。