У меня есть следующее 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);
Я записываю его в файл следующим образом:
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 нулевыми элементами и парой в третьем элементе. Я хочу, чтобы он возвращал только один элемент со значениями, которые я ему предоставил.
// Как я могу прочитать тот же объект обратно в HashMap?
ОК. Итак, основываясь на примечании Джема: это то, что кажется правильным объяснением:
ObjectOutputStream сериализует объекты (в данном случае HashMap) в любом формате, который ObjectInputStream поймет для десериализации, и делает это в общем для любого объекта Serializable.
Если вы хотите, чтобы он сериализовался в нужном вам формате, вам следует написать свой собственный сериализатор / десериализатор.
В моем случае: я просто перебираю каждый из этих элементов в HashMap, когда читаю объект обратно из файла, получаю данные и делаю с ним все, что захочу. (он входит в цикл только в той точке, где есть данные).
Спасибо,