我正在开发一个插件,它将在操作期间使用的 HashMap 中存储部落(部落类对象)。 hasmap 将存储在一个文件中(将 hashmap 序列化为一个整体是理想的,但我不确定这是否可能)以供稍后重新加载。
我应该如何保存对象?我可以序列化整个 HashMap 吗?提前致谢;我是 HashMap 新手:P
最佳答案
HashMap 本身实现了可序列化,因此如果键和值都是可序列化的,则可以序列化整个 HashMap。首先您必须决定使用什么键。键可以是任何对象,但必须同时实现 equals(..) 和 hashCode() 方法,以便在 HashMap 中识别该键。
在您的情况下,您可能可以使用部落名称作为表示为字符串对象的键。此外,Clan 应该实现可序列化(或可外部化)。
public class Clan
implements Serializable
{
...
}
按如下方式创建 HashMap(使用 Java 1.5 或更高版本):
Map<String, Clan> clans = new HashMap<String, Clan>();
将其序列化为文件,如下所示:
FileOutputStream fos = new FileOutputStream("t.tmp");
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(clans);
oos.close();
使用 ObjectInputStream 对其进行反序列化。 Java 序列化过程非常慢,因此如果速度是一个问题,您应该检查替代序列化技术。 Kryo 是一个非常简单且快速的序列化库 ( https://code.google.com/p/kryo/ )。
关于java - 我应该如何使用Hashmap来存储对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15752764/