【问题标题】:How do i creat a 2D bit array in java where data stored in each cell is of size 1 bit on hard drive?如何在 java 中创建一个二维位数组,其中每个单元格中存储的数据在硬盘上的大小为 1 位?
【发布时间】:2012-08-07 01:49:12
【问题描述】:

我真正想要完成的事情如下: 1) 创建一个表或打包的 2D 位数组,2 列——行可以是任意长度。 给出列名,以便我可以引用它们。 3)然后我可以设置这个数组中的各个位 4)一旦将数据放入表中,我想将表对象写入文件。 我不关心内存中表对象的大小,因为每个单元格中的数据在硬盘驱动器上占用 1 位。假设表对象的大小为 10 字节,我在表中存储了 16 位,所以当写入文件时,我总共得到 12 字节。

我是编程新手,所以如果我没有说清楚,请原谅。 我很欣赏你的知识。

【问题讨论】:

    标签: 2d bitarray


    【解决方案1】:

    任何二维数组都可以使用一维数组来实现。以 m 行 n 列的二维数组为例。在这种情况下,等效一维数组的大小将是 m*n。

    2D[i, j] 将等价于 1D[i*n + j]。这里 i 是行索引,j 是列索引。

    在 java 中,您使用 BitSet 来实现一维位数组。 BitSet 类是一个可序列化的类,因此您可以将它保存在磁盘中。当您将 bitset 对象保存在硬盘中时,可能需要进一步研究最终会占用多少空间。

    【讨论】:

    • 非常感谢 Niraj 的想法。我已经阅读了一些关于 BitSet 的内容,将对该主题进行更多研究,看看会发生什么。
    【解决方案2】:

    你不能在硬盘上保存一点。

    例如我认为java中的char数据类型占用4位,这就是你可以使用的简单数据类型。

    【讨论】:

    • 了解 BitArray 概念。可以按要求在 2 个字节中保存 16 位。是的,17 位将占用 3 个字节,但 24 位将再次请求相同的内存。
    • 感谢您的信息。实际上,我并不想将 1 位保存到硬盘上。我希望存储在数组索引中的数据每个为 1 位。因此,一旦我将数组对象写入文件,程序就会指定原始类型的内存大小加上其内容,即 1 位 * n 位,具体取决于行数。这个数组应该只有两列。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2019-11-08
    • 1970-01-01
    • 2016-06-09
    • 2014-11-11
    • 2016-01-14
    • 2019-11-04
    相关资源
    最近更新 更多