我有以下HashMap:
HashMap fileObj = new HashMap();
ArrayList cols = new ArrayList();
cols.add("a");
cols.add("b");
cols.add("c");
fileObj.put("mylist",cols);
我把它写到一个文件如下:
File file = new File("temp");
FileOutputStream f = new FileOutputStream(file);
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject(fileObj);
s.flush();
现在我想把这个文件读回一个HashMap,其中Object是一个ArrayList.
如果我只是这样做:
File file = new File("temp");
FileInputStream f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(f);
fileObj = (HashMap)s.readObject();
s.close();
这不会以我保存的格式给我对象.
它返回一个具有15个空元素的表,并且< mylist,[a,b,c]>配对在第3个元素.我希望它只返回一个元素与我提供给它的值首先.
//如何将相同的对象读回到HashMap?
OK所以基于Cem的笔记:这是什么似乎是正确的解释:
ObjectOutputStream以ObjectInputStream将以任何格式解析对象(HashMap在这种情况下)进行序列化,以反序列化,并对任何可序列化对象进行一般性的排序.
如果您希望以您希望的格式序列化,您应该编写自己的serializer / deserializer.
在我的情况下:当我从文件中读取Object并获取数据并使用它做任何事情时,我只需遍历HashMap中的每个元素. (它只在有数据的点进入循环).
谢谢,