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);
我将其写入文件中,如下所示:
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<String,Object>)s.readObject();
s.close();
这并不能按照我以前保存的格式返回对象。它返回一个表格,其中有15个空元素和<mylist,[a,b,c]>对在第三个元素。我希望它只返回一个元素,并具有我最初提供给它的值。
// 如何将相同的对象读回HashMap?
好的,根据Cem的说明:这是正确的解释:
ObjectOutputStream将对象(在本例中为HashMap)序列化为任何ObjectInputStream将理解的格式,并且对于任何可序列化对象,都会进行通用序列化。如果要将其序列化为所需的格式,则应编写自己的序列化器/反序列化器。
在我的情况下:当我从文件中读回对象并获取数据并执行所需操作时,我仅迭代HashMap中的每个元素(它仅在存在数据的点进入循环)。
谢谢,
HashMap<String,List<String>>
? - Jim Garrison