将哈希映射保存到 SharedPreferences

Ram*_*r.M 3 java android hashmap sharedpreferences

如何使用 SharedPreference 中的以下格式在 android 中保存和获取 Hashmap

HashMap<String, List<String>> mChildMap = new HashMap<>();    
Run Code Online (Sandbox Code Playgroud)

Jin*_*cis 7

将 HashMap 插入 SharedPreference 的函数

private void insertToSP(HashMap<String, List<String>> jsonMap) {
  String jsonString = new Gson().toJson(jsonMap);
  SharedPreferences sharedPreferences = getSharedPreferences("HashMap", MODE_PRIVATE);
  SharedPreferences.Editor editor = sharedPreferences.edit();
  editor.putString("map", jsonString);
  editor.apply();
}
Run Code Online (Sandbox Code Playgroud)

从 SharedPreference 读取 hashMap 的函数

private HashMap<String, List<String>> readFromSP(){
   SharedPreferences sharedPreferences = getSharedPreferences("HashMap", MODE_PRIVATE);
   String defValue = new Gson().toJson(new HashMap<String, List<String>>());
   String json=sharedPreferences.getString("map",defValue);
   TypeToken<HashMap<String,List<String>>> token = new TypeToken<HashMap<String,List<String>>>() {};
   HashMap<String,List<String>> retrievedMap=new Gson().fromJson(json,token.getType());
   return retrievedMap;
}
Run Code Online (Sandbox Code Playgroud)

在gradle中添加这个依赖

implementation 'com.google.code.gson:gson:2.6.2'
Run Code Online (Sandbox Code Playgroud)