所以,我碰到一個鑄鋼問題與存儲HashMap
性質的Properties
文件,因爲HashMap
的關鍵是能不能被轉換爲java.lang.String
的對象,因爲屬性必須是(String, String)
而我的HashMap
是(Object, Long)
。保存HashMap的性能屬性文件,並加載這些屬性回到HashMap的
我只是想將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')。你應該想出適合你的數據的自己的數據文件格式來保存/檢索。 –
爲了這個目的,使用ObjectInputStream和ObjectOutputStream可能會比使用Properties格式更好,除非您希望另一個程序讀取/寫入它。 – Lee