我有以下HashMap:
HashMap<String,Object> fileObj = new HashMap<String,Object>();
ArrayList<String> cols = new ArrayList<String>();
cols.add("a");
cols.add("b");
cols.add("c");
fileObj.put("mylist",cols);
Run Code Online (Sandbox Code Playgroud)
我将它写入文件如下:
File file = new File("temp");
FileOutputStream f = new FileOutputStream(file);
ObjectOutputStream s = new ObjectOutputStream(f);
s.writeObject(fileObj);
s.flush();
Run Code Online (Sandbox Code Playgroud)
现在我想将此文件读回HashMap,其中Object是一个ArrayList.如果我只是这样做:
File file = new File("temp");
FileInputStream f = new FileInputStream(file);
ObjectInputStream s = new ObjectInputStream(f);
fileObj = (HashMap<String,Object>)s.readObject();
s.close();
Run Code Online (Sandbox Code Playgroud)
这不会以我保存的格式给出对象.它返回一个包含15个null元素的表和第3个元素的<mylist,[a,b,c]>对.我希望它只返回一个元素,其中包含我首先提供给它的值.
//如何将同一个对象读回HashMap?
好基于Cem的说明:这似乎是正确的解释:
ObjectOutputStream以ObjectInputStream理解的反序列化格式序列化对象(在本例中为HashMap),并且对任何Serializable对象都是如此.如果您希望以您希望的格式进行序列化,则应编写自己的序列化器/解串器.
就我而言:当我从文件中读回Object并获取数据并用它做任何我想做的事情时,我只是遍历HashMap中的每个元素.(它只在有数据的地方进入循环).
谢谢,