2013-01-23 29 views
1

我正在尋找實現一個HashMap的內容在字節碼中。這與我序列化內容然後讀取內容類似。但根據我的經驗,序列化只能將它保存到一個文件然後讀入,我希望這個實現比這個更快。Java:編譯內容的HashMap

+1

你想要解決什麼確切的問題? – kan

+1

你是指字節數組而不是字節碼?字節碼是你的java代碼在你編譯之後變成的東西 – gerrytan

+0

我想讓一個類的初始化和查找的時間儘可能小。我的想法是輸出一個帶有寫入數據的.java文件,然後將該文件編譯爲字節碼。 – superbriggs

回答

3

但根據我的經驗,序列化只能將它保存到一個文件然後讀入,我希望這個實現比這個更快。

序列化適用於。具體而言,ObjectOutputStream可以包裝任何OutputStream。如果你想執行內存中的序列化,你可以在這裏使用ByteArrayOutputStream

同樣在輸入端。

0

您可以保存使用Java序列化mechanizm你的HashMap的字節數組

Map map = new HashMap(); 
    map.put(1, 1); 
    ByteArrayOutputStream bout = new ByteArrayOutputStream(); 
    ObjectOutputStream oos = new ObjectOutputStream(bout); 
    oos.writeObject(map); 
    oos.close(); 
    byte[] bytes = bout.toByteArray(); 
    // restore from bytes 
    ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes)); 
    map = (Map) ois.readObject(); 
    System.out.println(map); 

輸出

{1=1} 

不是在地圖鍵和值必須是可序列化,否則它不會工作

+0

謝謝。我會輸出一個帶有數據的java文件作爲字符串,然後反序列化它。這個方法如何比較使我自己的HashMap類有表(與值)作爲靜態變量呢? – superbriggs