Итак, я столкнулся с проблемой приведения с сохранением свойств HashMap
в файл Properties
, потому что ключ HashMap
— это объект, который нельзя преобразовать в java.lang.String
, потому что свойства должны быть (String, String)
, а мои HashMap
— это (Object, Long)
.
Я просто хочу сохранить содержимое HashMap
в файл, чтобы я мог загрузить это содержимое обратно в HashMap
при следующем запуске программы.
Я предпринял огромное количество бесполезных попыток пополнить HashMaps
объектами, которые они содержали до того, как они были сохранены. Я попытался придумать простой способ преобразовать объект в строку, что я могу сделать, но поскольку Properties
и HashMaps
не индексируются, я не могу изменить эти строки обратно в объект, которым они должны быть. Как этого добиться?
Вот что я пытаюсь сделать:
public File savedHashMaps = new File("SavedHashMaps.list");
// in my case, the object is 'Location' from an implemented API
public Map<Location, Long> map = new HashMap<Location, Long>();
public void saveMaps() {
Properties prop = new Properties();
try {
if (!map.isEmpty()) {
prop.load(new FileInputStream(savedHashMaps));
prop.putAll(map);
prop.store(new FileOutputStream(savedHashMaps), null);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void loadMaps() {
Properties prop = new Properties();
try {
prop.load(new FileInputStream(savedHashMaps));
if (!prop.isEmpty()) {
map.putAll((Map)prop);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Map<Location, Long>
). Вы должны придумать свой собственный формат файла данных, который подходит для сохранения/восстановления данных. - person Bhesh Gurung   schedule 28.11.2012ObjectInputStream
иObjectOutputStream
, а не формат свойств, если вы не ожидаете, что другая программа будет читать/записывать его. - person Opal   schedule 28.11.2012