2

哈希映射

public Map<String, BarrackData> barrack = new HashMap<String, BarrackData>();

营房数据.java

public class BarrackData {
int A;
int B;
int C;
int D;
int E;
String Title;

public BarrackData(int a, int b, int c, int d, int e, String title) {
    A = a;
    B = b;
    C = c;
    D = d;
    P = p;
    Title = title;
}

我怎样才能保存这个HashMap?并加载它?
我用 Objectin/outputstream 尝试了不同的方法,
结果是 NotSerializable、ObjectSteam 和 IO 异常,
我不知道如何处理它们。

4

3 回答 3

2

只有Serializable类可以序列化:只需添加implements Serializable到您的类:

public class BarrackData implements Serializable {


请注意,要实际序列化,类中的所有字段都必须是Serializable,但是 java 原语、数组(如果元素类型是Serializable)、java.lang类(如String)和Collections(如果元素类型是Serializable)是Serializable,所以你没问题。

于 2012-10-23T18:28:57.953 回答
0

您必须使您的 Object 类可序列化(为其提供 serialize() 和 deserialize() 方法,将其转换为字符串或可以保存/加载的字符串)。显然,HashMap 促进了开箱即用的某种程度的序列化。

以下是 Java 序列化教程的链接:http ://www.tutorialspoint.com/java/java_serialization.htm

这里有一些关于 HashMap 序列化的更详细信息: Serializing and deserializing a map with key as string

正如 Bohemian 所提到的,实施Serializable是执行此操作的标准方法。

于 2012-10-23T18:30:08.093 回答
0

要完成答案,请注意keySet()属于HashMap(如果您随时需要)的结果不是Serializable

实际上,键不应该与有关HashMap.

于 2012-10-23T18:30:27.160 回答