在java文件上管理大型阵列
我正在编写一个android应用程序,它需要大量内存,有时我的双数组会达到兆字节的大小,我不知何故需要在可行的时间获得所有可用的数据。我知道大多数时候我都不能把它们都放在RAM上。因此,我正在寻找一个java API,它允许我创建在文件系统上而不是在RAM上管理的数组,该API应该使我能够像处理一个真实数组一样工作,例如,它必须有get(int index)set(int index)和length()方法,这些方法与处理真实数组的方法相同在java文件上管理大型阵列,java,arrays,memory,Java,Arrays,Memory,我正在编写一个android应用程序,它需要大量内存,有时我的双数组会达到兆字节的大小,我不知何故需要在可行的时间获得所有可用的数据。我知道大多数时候我都不能把它们都放在RAM上。因此,我正在寻找一个java API,它允许我创建在文件系统上而不是在RAM上管理的数组,该API应该使我能够像处理一个真实数组一样工作,例如,它必须有get(int index)set(int index)和length()方法,这些方法与处理真实数组的方法相同 有谁知道有这样的好图书馆吗?或者建议一种更好的方法?您
有谁知道有这样的好图书馆吗?或者建议一种更好的方法?您可能想看看及其方法 您可能想看看和它的方法 嗯,你可能会发现切换到实际的数据库可能是你最好的选择。我喜欢H2数据库,它是用纯java编写的。它是一个嵌入式数据库,意味着它将自己存储在文件系统中。它可以在内存数据库中执行,但这不是您想要的持久性。否则,您可以尝试创建一个表示大数组一部分的数组容器对象,将这些容器对象链接在一起,就像在一个双链接列表中一样,然后将这些对象序列化到文件系统。在我看来,使用数据库来处理这些对象有点浪费,不是吗?如果它最容易解决您的问题,就不会…:-)@SnakeDoc是的,我可以以某种方式自己实现它,但我想知道是否已经有人解决了这个问题,比我自己更好嗯,你可能会发现切换到实际的数据库可能是你最好的选择。我喜欢H2数据库,它是用纯java编写的。它是一个嵌入式数据库,意味着它将自己存储在文件系统中。它可以在内存数据库中执行,但这不是您想要的持久性。否则,您可以尝试创建一个表示大数组一部分的数组容器对象,将这些容器对象链接在一起,就像在一个双链接列表中一样,然后将这些对象序列化到文件系统。在我看来,使用数据库来处理这些对象有点浪费,不是吗?如果它最容易解决您的问题,就不会…:-)@SnakeDoc是的,我可以自己以某种方式实现它,但我想知道是否已经有人能够更好地解决这个问题,然后我可以自己做这没有帮助,因为android没有java 7:(@SnakeDoc nice!好的,我会试试的!@OfekRon你只要去
文件频道->MappedByteBuffer
->FloatBuffer
路径,在需要的地方添加一些错误处理。如果你有更具体的问题,就发布一个关于它们的新问题。我不知道Android上是否有内存映射IO。你的问题不是我不明白如何将一个双数组转换成一个文件通道,以供这个mappedbytebuffer访问thing@OfekRon您必须从文件通道开始。打开(…)
并从那里开始工作。这没有帮助,因为android不支持java 7:(@SnakeDoc nice!好的,我会试试的!@OfekRon你只要去文件频道->MappedByteBuffer
->FloatBuffer
路径,在需要的地方添加一些错误处理。如果你有更具体的问题,就发布一个关于它们的新问题。我不知道Android上是否有内存映射IO。你的问题不是我不明白如何将一个双数组转换成一个文件通道,以供这个mappedbytebuffer访问thing@OfekRon您必须从文件频道开始。打开(…)
并从那里开始工作。