应该很容易。
我正在研究Scala试图处理长序列的二进制数据。这是0和1的长列表。存储/访问此类数据的“最佳”方式是什么。
这里重点是内存优化,所以我想避免使用整个字节来存储布尔值。访问也很重要,所以我想避免将它们放入字节然后放入数组。
BitMap是个好主意吗? scala中有这样的类吗?
如果没有,最好使用ByteArray吗?你会如何实现这个?
还有其他想法吗?
谢谢,
答案 0 :(得分:2)
你可以使用java.util.BitSet(如果有聪明的解释,可能还有一些,以使它更像Scala)。
如果这仍然太昂贵,我会编写一个内部使用数组的类,并将这些位打包成整数或字节。
答案 1 :(得分:2)
如果您的值不均匀分布(明显多于0),则可以使用run-length encoding对图像数据进行编码。这是传真使用的编码。
有两种编码选项: