我可以用于包含短变量的矩阵的最佳数据结构是什么,但大多数元素都是空的。
我可以简单地使用n by b数组作为矩阵,但问题是我不想浪费内存,因为矩阵中只有少数元素。
我打算使用链表或哈希表,但不确定哪一个是最好的数据结构以及如何实现这个...
答案 0 :(得分:4)
我会实现Sparse Matrix。使用带有行索引的HashMap
作为键,然后使用HashMap
或TreeMap
作为实际元素(列索引为键)。如果您要存储基本类型,我建议您查看Trove Java Collections Framework。它针对原始类型进行了优化。无论如何我建议使用它,因为键都可以是原始的。
答案 1 :(得分:1)
Google Guava库还有多个Table实施
答案 2 :(得分:0)
当矩阵稀疏时,最好使用LinkedList。在空间方面,LinkedList将优于其他选项(假设矩阵是稀疏的)。
但请注意,LinkedList的访问时间为O(n)。