在Java中将大量对象存储到磁盘的最佳方法

NEO

这是我计划存储在磁盘中的对象,

public class SObject {
    /**
     * 
     */
    private String value;
    private int occurences;
    private String key;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public int getOccurences() {
        return occurences;
    }

    public void setOccurences(int occurences) {
        this.occurences = occurences;
    }

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }
}

我正在考虑创建对象列表并将该列表存储到如下所示的新类中,

public class ToDisk implements Serializable{
        List<SObject> sobj;

    public List<SObject> getSobj() {
        return sobj;
    }

    public void setSobj(List<SObject> sobj) {
        this.sobj = sobj;
    }

}

这是以最少的代码工作量来写数据的有效方法吗?我还发现通过使用序列化从磁盘读取数据更容易。因为列表的大小可能非常大(〜10k +),所以我应该在代码易用性和大小之间找到平衡。有什么办法可以达到这种平衡?与序列化相比,是否还有其他方法可以减小数据大小,请与我联系。我不能使用任何外部库。

彼得·劳瑞

顺便说一句,您不需要列表包装​​器即可将许多项目写入文件,但是您的项目因此需要可序列化。

public class SObject {
    private String value;
    private int occurences;
    private String key;
}

来写

List<SObject> list = new ArrayList<>();

ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fileName));
oos.writeObject(list);
oos.close();

读书

ObjectInputStream ois = new ObjectInputStream(new FileInputStream(fileName));
List<SObject> list = (List<SObject>) ois.readObject(); // cast is needed.
ois.close()

写压缩

ObjectOutputStream oos = new ObjectOutputStream(new DeflaterOutputStream(new FileOutputStream(fileName)));
oos.writeObject(list);
oos.close();

阅读压缩

ObjectInputStream ois = new ObjectInputStream(new InflaterInputStream(new FileInputStream(fileName)));
List<SObject> list = (List<SObject>) ois.readObject(); // cast is needed.
ois.close()

这是以最少的代码工作量来写数据的有效方法吗?

您必须制作SObject implement Serializable,仅此而已您不能使其更短。

您可以通过使其更高效来进行工作,implement Externalizable但这需要更多工作。

我还发现通过使用序列化从磁盘读取数据更容易。

听起来是这样做的一个很好的理由。

由于清单的大小可能非常大(〜10k +),

除非您的弦很长,否则10K对我来说听起来很小。我有一个针对我的序列化/持久性库的测试,它可以在几秒钟内写入和读取10,000,000个条目。

我应该在代码易用性和大小之间找到平衡。有什么办法可以达到这种平衡?

我怀疑轻松是您需要担心的。如果您想缩小文件大小,可以通过使用GZIP或压缩器/充气器流包装文件流来对其进行压缩。这将添加一行代码,并使文件缩小4倍。

与序列化相比,是否还有其他方法可以减小数据大小,请与我联系。我不能使用任何外部库。

它们都需要外部库。您可以使用XMLEncoder和XMLDecoder,但这会变得越来越慢。


既然我对此有疑问;如果您对我的图书馆Java Chronicle 2.x感兴趣,这是笔记本电脑上运行的测试结果。这次写了5亿个条目并在第二个线程中读取它们(正在写它们)花费了多长时间,只花了12秒钟以上。

Rate = 41.0 Mmsg/sec for 16 byte messages

该测试是多线程()中IndexedChronicleTest

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中将大量对象存储到磁盘的最佳方法

来自分类Dev

在Flutter中将具有图像的对象存储在磁盘上的最佳方法是什么?

来自分类Dev

存储、更改和保存大量类对象的最佳方法

来自分类Dev

在文件中存储大量对象的最佳方法是什么?

来自分类Dev

存储大量数据的最佳方法

来自分类Dev

用Java存储对象集合的最佳方法?

来自分类Dev

存储对象集合的最佳方法

来自分类Dev

存储对象集合的最佳方法

来自分类Dev

在Redis中存储Java对象列表的最佳方法

来自分类Dev

Java:存储和访问对象列表的最佳方法

来自分类Dev

在每个循环中将大量数组存储到列表中

来自分类Dev

在磁盘C ++上存储科学数据集的最佳方法

来自分类Dev

FORTRAN:存储可在MATLAB中读取的大量数据的最佳方法

来自分类Dev

Phonegap中最佳/最简单的本地存储方法-大量数据

来自分类Dev

在数组中存储大量数据的最佳方法是什么?

来自分类Dev

在HDD上存储包含大量文件的游戏的最佳方法

来自分类Dev

在 Java 中将对象视为可迭代对象的最佳方法是什么?

来自分类Dev

访问存储在ArrayList中的对象的最佳方法?

来自分类Dev

处理大量域对象的最佳方法是什么?

来自分类Dev

向对象发送大量表单数据的最佳方法

来自分类Dev

如何在Java中将整数类型值或对象类型值存储到char数组中

来自分类Dev

将大量特定对象存储在内存中以便稍后筛选以查找特定对象的最佳实践?

来自分类Dev

字典的存储容量,想在Python中将大量数据存储到字典中

来自分类Dev

可靠存储复杂Java对象层次结构的最佳方法是什么?

来自分类Dev

将大量数据从本地存储转移到Azure Blob存储的最佳方法是什么

来自分类Dev

在多个提交中将外键存储在PHP中的最佳方法?

来自分类Dev

Java-打开大量文件并搜索单词的最佳方法?

来自分类Dev

将其中包含对象的PHP数组存储到类似SQLite的数据库中的最佳方法是什么?

来自分类Dev

在Android(Java)中将OpenCV矩阵转换为字符串以存储在数据库中的最佳方法

Related 相关文章

  1. 1

    在Java中将大量对象存储到磁盘的最佳方法

  2. 2

    在Flutter中将具有图像的对象存储在磁盘上的最佳方法是什么?

  3. 3

    存储、更改和保存大量类对象的最佳方法

  4. 4

    在文件中存储大量对象的最佳方法是什么?

  5. 5

    存储大量数据的最佳方法

  6. 6

    用Java存储对象集合的最佳方法?

  7. 7

    存储对象集合的最佳方法

  8. 8

    存储对象集合的最佳方法

  9. 9

    在Redis中存储Java对象列表的最佳方法

  10. 10

    Java:存储和访问对象列表的最佳方法

  11. 11

    在每个循环中将大量数组存储到列表中

  12. 12

    在磁盘C ++上存储科学数据集的最佳方法

  13. 13

    FORTRAN:存储可在MATLAB中读取的大量数据的最佳方法

  14. 14

    Phonegap中最佳/最简单的本地存储方法-大量数据

  15. 15

    在数组中存储大量数据的最佳方法是什么?

  16. 16

    在HDD上存储包含大量文件的游戏的最佳方法

  17. 17

    在 Java 中将对象视为可迭代对象的最佳方法是什么?

  18. 18

    访问存储在ArrayList中的对象的最佳方法?

  19. 19

    处理大量域对象的最佳方法是什么?

  20. 20

    向对象发送大量表单数据的最佳方法

  21. 21

    如何在Java中将整数类型值或对象类型值存储到char数组中

  22. 22

    将大量特定对象存储在内存中以便稍后筛选以查找特定对象的最佳实践?

  23. 23

    字典的存储容量,想在Python中将大量数据存储到字典中

  24. 24

    可靠存储复杂Java对象层次结构的最佳方法是什么?

  25. 25

    将大量数据从本地存储转移到Azure Blob存储的最佳方法是什么

  26. 26

    在多个提交中将外键存储在PHP中的最佳方法?

  27. 27

    Java-打开大量文件并搜索单词的最佳方法?

  28. 28

    将其中包含对象的PHP数组存储到类似SQLite的数据库中的最佳方法是什么?

  29. 29

    在Android(Java)中将OpenCV矩阵转换为字符串以存储在数据库中的最佳方法

热门标签

归档