【发布时间】:2015-07-24 07:56:45
【问题描述】:
我需要在一个时间周期结束时将数千个对象状态存储在一个文件中,并在每个新周期开始时将它们恢复到主内存中。
所以到目前为止我想到了两种方法:
例如将这些对象直接存储为
class UsingClassObjects {
private String name;
private int age;
private long rollNo;
private long credits;
}
或者创建一个hashMap来存储状态:
class UsingHashMap{
HashMap<Integer, HashMap<String, HashMap<Long, Long>>> data = new HashMap<Integer, HashMap<String, HashMap<Long, Long>>>();
}
那么这两种方法中哪一种在内存和效率方面更好,为什么?
还有更好的方法吗?
如果我使用 HashMap,序列化对象会影响性能而不是将状态写入纯文本文件吗?
【问题讨论】:
-
不能使用数据库吗?
-
根据您的用例,您可能会找到适合您要求的非关系型数据库,如 MongoDB (mongodb.org) 或 ObjectDB (objectdb.com) 等基于对象的解决方案。它们针对快速数据检索进行了优化。
-
“UsingHashMap”选项会浪费大量内存,因为您有数十个、数百个甚至数千个 HashMap 实例。您需要的数据结构取决于您如何访问它,而不是您计划如何存储它。
-
@npinti 不,不能使用数据库
-
@Robert 但是只有一个 Main hashMap 对象包含许多键及其对应的值(作为嵌套的 hashMaps)。
标签: java performance serialization hashmap