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