java - 实现大型二维位数组的最佳方式

标签 java arrays boolean bit

我正在通过优化生命游戏程序自学一些更高级的 Java。

到目前为止,我已经使用多线程和将世界的某些部分标记为“脏”来加快速度。 但是,World 数组目前是一个二维字节数组,创建一个远大于 30000*30000 的世界大小会导致 java 堆空间错误。 有什么更好的方法来存储非常大的二维 boolean 值/位数组?

最佳答案

您可以使用一个具有 30,000 x 30,000 位的大型 BitSet

但即便如此,内存消耗也会相当高,您可能会遇到严重的性能问题。可能需要使用仅包含整个世界的非空部分的稀疏数据结构的更聪明的解决方案。

另见 SparseBitSet .

关于java - 实现大型二维位数组的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30313016/

相关文章:

sql - 在 SQL 中读取 XML BOOLEAN 值

c++ - 为什么多态类型的原始数组是危险的

python - 比较python nlp中的集合

java - 如何检查 boolean 数组是否包含所有真值?

java - 如何在java中更新浏览器缓存

javascript - 将类添加到数组中的项目并删除其他项目

php - 使用array_search,但在找到结果后继续搜索(PHP)

java - 相当于 Paths.get ("abc/def.jpg")在 C 和 C++ 中获取与操作系统无关的路径?

java - 从 1-50 的生成器生成 1-100 的随机数

java - 我需要在各自的接口(interface)中声明抽象类的方法吗?