如何将Hashmap存储到android,以便在使用共享首选项重新启动应用程序时重用它?

use*_*950 13 java android hashmap sharedpreferences

我想将hashmap存储到我的android应用程序中,当重新启动时,它会显示最后保存的hashmap值.

HashMap<Integer,String> HtKpi=new HashMap<Integer,String>(); 
Run Code Online (Sandbox Code Playgroud)

是我的hashmap,44个值动态存储在其中.这工作正常!现在,我想将其存储以备将来使用(应用程序重启或重用).

kga*_*ron 23

您可以将其序列化为json并将结果字符串存储在首选项中.然后,当应用程序重新启动时,从首选项中获取字符串并对其进行反序列化.

编辑:

为此,您可以使用Google Gson.

您需要将地图包装在一个类中:

public class MapWrapper {
  private HashMap<Integer, String> myMap;
  // getter and setter for 'myMap'
}
Run Code Online (Sandbox Code Playgroud)

存储地图:

Gson gson = new Gson();
MapWrapper wrapper = new MapWrapper();
wrapper.setMyMap(HtKpi);
String serializedMap = gson.toJson(wrapper);
// add 'serializedMap' to preferences
Run Code Online (Sandbox Code Playgroud)

要检索地图:

String wrapperStr = preferences.getString(yourKey);
MapWrapper wrapper = gson.fromJson(wrapperStr, MapWrapper.class);
HashMap<Integer, String> HtKpi = wrapper.getMyMap(); 
Run Code Online (Sandbox Code Playgroud)