Android存储:SharePreferences保存Map方法

场景:工作需要动态保存一个map,每次需要进行查询是否有某个元素,有的话就不保存,没有就保存

保存map

 /**
     * 用于保存集合
     *
     * @param map map数据
     * @return 保存结果
     */
    public static  boolean putHashMapData(Map map) {
        boolean result;
        SharedPreferences sp = MyApplication.getContext().getSharedPreferences("SIGN", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();
        try {
            Gson gson = new Gson();
            String json = gson.toJson(map);
            editor.putString("recognizeUserMap", json);
            result = true;
        } catch (Exception e) {
            result = false;
            e.printStackTrace();
        }
        editor.apply();
        return result;
    }

取出map

 /**
     * 用于取出集合
     *
     * @return HashMap
     */
    public static  HashMap getHashMapData(Class clsV) {
        SharedPreferences sp = MyApplication.getContext().getSharedPreferences("SIGN", Context.MODE_PRIVATE);
        String json = sp.getString("recognizeUserMap", "");
        HashMap map = new HashMap<>();
        Gson gson = new Gson();
        /*JsonObject obj = new JsonParser().parse(json).getAsJsonObject();
        Set> entrySet = obj.entrySet();
        for (Map.Entry entry : entrySet) {
            String entryKey = entry.getKey();
            JsonObject value = (JsonObject) entry.getValue();
            map.put(entryKey, gson.fromJson(value, clsV));
        }*/
        JsonParser jsonParser = new JsonParser();
        JsonObject obj= jsonParser.parse(json).getAsJsonObject();


        map.put("recognizeUserMap", gson.fromJson(obj, clsV));

        Log.e(TAG, "getHashMapData-------------------" + obj.toString());

        return map;
    }

你可能感兴趣的:(android)