如何将Hashmap存储到Android,以便在使用共享首选项重新启动应用程序时重用它?
2022-09-03 17:52:08
我想将哈希映射存储到我的Android应用程序中,当重新启动时,它会显示哈希映射的上次保存值。
HashMap<Integer,String> HtKpi=new HashMap<Integer,String>();
是我的哈希映射,其中动态存储了 44 个值。这工作正常!!!现在,我想存储它以备将来使用(应用程序重新启动或重用)。
我想将哈希映射存储到我的Android应用程序中,当重新启动时,它会显示哈希映射的上次保存值。
HashMap<Integer,String> HtKpi=new HashMap<Integer,String>();
是我的哈希映射,其中动态存储了 44 个值。这工作正常!!!现在,我想存储它以备将来使用(应用程序重新启动或重用)。
您可以将其序列化为 json,并将生成的字符串存储在首选项中。然后,当应用程序重新启动时,从首选项中获取字符串并将其反序列化。
编辑:
为此,您可以使用Google Gson。
您需要将地图包装在一个类中:
public class MapWrapper {
private HashMap<Integer, String> myMap;
// getter and setter for 'myMap'
}
要存储地图:
Gson gson = new Gson();
MapWrapper wrapper = new MapWrapper();
wrapper.setMyMap(HtKpi);
String serializedMap = gson.toJson(wrapper);
// add 'serializedMap' to preferences
要检索地图:
String wrapperStr = preferences.getString(yourKey);
MapWrapper wrapper = gson.fromJson(wrapperStr, MapWrapper.class);
HashMap<Integer, String> HtKpi = wrapper.getMyMap();
序列化它并将其保存在共享首选项或文件中。当然,是否可以执行此操作取决于从映射到的数据类型。(例如,如果您尝试序列化视图,这将不起作用。
例:
//persist
HashMap<String, Integer> counters; //the hashmap you want to save
SharedPreferences pref = getContext().getSharedPreferences("Your_Shared_Prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
for (String s : counters.keySet()) {
editor.putInteger(s, counters.get(s));
}
editor.commit();
//load
SharedPreferences pref = getContext().getSharedPreferences("Your_Shared_Prefs", Context.MODE_PRIVATE);
HashMap<String, Integer> map= (HashMap<String, Integer>) pref.getAll();
for (String s : map.keySet()) {
Integer value=map.get(s);
//Use Value
}