我需要保存一组复杂的preferences,本质上是包含其他hashmaps数组的HashMap作为其键的值。
我如何将它保存到preferences,或者应该以另一种方式保存这样的preferences?我应该为首选项创建一个对象并将其序列化为一个文件吗?如果是的话,请怎样做呢?
发布于 2019-11-07 17:51:30
我已经忘记了这件事,但我想过了这么长时间,我会发个答案的。我通常使用序列化来存储这些项目,如下所示。
public void serializeObject(Object object, String filename) {
try {
File file = new File(context.getFilesDir(), filename);
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(file));
oos.writeObject(object);
oos.flush();
oos.close();
}
catch (IOException e) {e.printStackTrace();}
}File file = new File(context.getFilesDir(), Filename);
if (file.exists()) map = (LinkedHashMap) loadSerialisedClassFile(file);
public Object loadSerialisedClassFile(File file) {
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));
Object object = ois.readObject();
return object;
}
catch(Exception ex) {
ex.printStackTrace();
}
return null;
}发布于 2019-11-07 13:10:52
您可以使用纸张,它是一个快速的NoSQL数据库。容易创建和存储数据在此。这是链接。https://github.com/pilgr/Paper
发布于 2013-07-24 13:52:51
SharedPreferences只在键/值对中存储原始值。因此,我不认为这是存储HashMap of Arrays of HashMaps的最佳方法--也就是说,除非数据可以以一种有意义的方式被扁平化(如果您使用的是一些真正的键值对HashMaps,那么您没有办法将这些数据存储为常规的键值对吗?)
如果数据结构真的那么复杂,您需要研究其他存储选项。根据长度的不同,我可能只使用一个SQLite数据库。它很容易设置,可以在您的应用程序中的任何地方访问,持久的存储首选项和快速。
https://stackoverflow.com/questions/17835602
复制相似问题