如何存储Set <set <string>&gt;在SharePreferences内?

时间:2018-01-07 06:00:06

标签: android sharedpreferences

我在我的项目中使用SharedPreference

我知道sharedPreference可以使用Set<String>存储prefs.putStringSet()。但我有一种情况需要在Set<Set<String>>中存储sharedPreference

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以使用 Gson Set<Set<String>>转换为字符串,然后将其保存在sharepreference中,但没有直接的方法可以在sharepreference <中保存此类型/ p>

Gson gson = new Gson();
    String jsonObject = gson.toJson(your_set_variable);

    editor.putString(KEY_PROJECTS, jsonObject );
    editor.commit();

已更新: 这是谷歌的Gson库,如果你需要使用它,将它添加到你的gradle依赖项中

compile 'com.google.code.gson:gson:2.8.0'

这个库为你提供了将你拥有的任何对象转换为字符串,然后将这个json字符串转换为你想要的类型,stackoverflow和google有许多例子可以使用它

答案 1 :(得分:0)

您不能使用SharedPreferences执行此操作,但可以将该集保存到文件中。

import math
import bisect
numbers = list(range(1, 20162))
tot = set()
numberabundance = []
abundant = []
for n in numbers:
    m = 2
    divisorsum = 1
    while m <= math.sqrt(n):
        if n % m == 0:
            divisorsum += m + (n / m)
        m += 1
    if math.sqrt(n) % 1 == 0:
        divisorsum -= math.sqrt(n)
    if divisorsum > n:
        numberabundance.append(1)
    else:
        numberabundance.append(0)
temp = 1
# print(numberabundance)
for each in numberabundance:
    if each == 1:
        abundant.append(temp)
    temp += 1
abundant_set = set(abundant)
print(abundant_set)
for i in range(12, 20162):
    for k in abundant:
        if i - k in abundant_set:
            tot.add(i)
            break
        elif i - k < i / 2:
            break
print(sum(numbers.difference(tot)))

编辑:然后您可以像这样加载它。

$('#DateSelector').val('30')
datePeriod();
function datePeriod() {
  let datePeriod = $("#DateSelector").val();
  $("#DateShow").html(datePeriod);
  $.getJSON(`https://discovrbookings.innocraft.cloud/?module=API&method=API.get&format=json&idSite=2&period=day&date=last${datePeriod}&token_auth=68aa5bd12137f13255dcb98794b65dff`, (data) => {

    //console.log(data);
    let visitors = 0;
    let uniq_visitors = 0;
    let pageviews = 0;
    let uniq_pageviews = 0;
    let actions = 0;
    let outlinks = 0;
    let bounces = 0;
    let avgtime = 0;

    for (i in data) {

      if (data[i].nb_visits) {
        visitors += data[i].nb_visits;
      }
      if (data[i].nb_uniq_visitors) {
        uniq_visitors += data[i].nb_uniq_visitors;
      }
      if (data[i].nb_pageviews) {
        pageviews += data[i].nb_pageviews;
      }
      if (data[i].nb_uniq_pageviews) {
        uniq_pageviews += data[i].nb_uniq_pageviews;
      }
      if (data[i].nb_actions) {
        actions += data[i].nb_actions;
      }
      if (data[i].nb_outlinks) {
        outlinks += data[i].nb_outlinks;
      }
      if (data[i].bounce_count) {
        bounces += data[i].bounce_count;
      }
      if (data[i].avg_time_on_site) {
        avgtime += data[i].avg_time_on_site;
      }
    }

    $("#visitors").html(visitors);
    $("#uniq_visitors").html(uniq_visitors);
    $("#pageviews").html(pageviews);
    $("#uniq_pageviews").html(uniq_pageviews);
    $("#actions").html(actions);
    $("#outlinks").html(outlinks);
    $("#bounces").html(bounces);
    $("#avgtime").html(avgtime / datePeriod);
  });
}