Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java文件上管理大型阵列_Java_Arrays_Memory - Fatal编程技术网

在java文件上管理大型阵列

在java文件上管理大型阵列,java,arrays,memory,Java,Arrays,Memory,我正在编写一个android应用程序,它需要大量内存,有时我的双数组会达到兆字节的大小,我不知何故需要在可行的时间获得所有可用的数据。我知道大多数时候我都不能把它们都放在RAM上。因此,我正在寻找一个java API,它允许我创建在文件系统上而不是在RAM上管理的数组,该API应该使我能够像处理一个真实数组一样工作,例如,它必须有get(int index)set(int index)和length()方法,这些方法与处理真实数组的方法相同 有谁知道有这样的好图书馆吗?或者建议一种更好的方法?您

我正在编写一个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您必须从
文件频道开始。打开(…)
并从那里开始工作。