2012-10-23 41 views
2

HashMap的如何保存並加載HashMap <String,Object>?

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

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異常,
在哪裏我不知道如何處理它們。

+2

爲了公平起見,它不是'Serializable'。 –

回答

2

只有Serializable類可以被序列化:只需添加implements Serializable到類:

public class BarrackData implements Serializable { 


注意,實際上系列化,類內的所有字段都必須Serializable,但是,Java基本類型,數組(如果元素類型爲Serializable),java.lang類(如String)和Collections(如果元素類型爲Serializable)爲Serializable,則表示確定。

+0

感謝您的幫助,當我試圖實現Serializable,Eclipse的要求增加一個串行版本ID或@SuppressWarnings(「串行」)。所以我不明白我必須選擇什麼,爲什麼。 – user1621988

+0

您不需要該序列版本ID。這是爲了保護你從反序列化改變你的類的字段類型/個數(假設你也改變了串行版本ID)之後。忽略它,如果你想 - 這是安全的 – Bohemian

0

你必須讓你的對象類序列化(給它序列化()和反序列化(),這將其轉換爲/從字符串或一些這樣可以保存/加載方法)。顯然,HashMaps方便了一些開箱即用的序列化。

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

這裏是HashMap的序列化的一些更詳細的信息: Serializing and deserializing a map with key as string

波希米亞提到,實施Serializable是做到這一點的標準方法。

0

要完整解答,請注意keySet()屬於HashMap(如果您隨時需要)的結果不是Serializable

事實上,不應該鍵從有關的HashMap值離解。

相關問題