android的SharedPreferences putStringSet命令/sorting

我尝试保存/恢复一组string,除了一件事情之外,所有工作都正在进行。 当我创build我的string,我把:

Set<String> set = new HashSet<String>(); for(int i=0; i<toggles.size();i++){ set.add(toggles.get(i).serialise()); } 

订单是例如“blutooth”“application”“data”。 当我回到设置:

 Set<String> set = prefs.getStringSet(key, new HashSet<String>()); for (String toggle : set){ Toggle t = new Toggle(); t.deserialize(toggle); toggles.add(t); } 

我得到“应用程序”“蓝牙”“数据”他们按名称sorting,我不想这样。 我想得到相同的订单,我有保存。 任何人都可以帮助我?

  • 应用程序通过“强制停止”或任务pipe理器终止后,Sharedpreference byte 值被清除
  • BackUpAgentHelperClass没有被调用
  • OnPreferenceChangeListener和OnSharedPreferenceChangeListener有什么不同
  • 在Android应用程序中存储用户名和密码的最佳选择
  • 具有多项活动的Android共享首选项
  • 我如何获得偏好在Android中工作?
  • 如何将SharedPreferences备份到SD卡?
  • 使用Android共享首选项来存储大量数据是一个好主意吗?
  • 这不可能。 集合是无序的集合。

    你可以用数字前缀string,例如00application01bluetooth02data ,按你想要的顺序排列。 将从getStringSet返回的Set<String>放在一个Array<Set>并对其进行sorting。

     Set<String> set = prefs.getStringSet(key, new HashSet<String>()); Array<String> a = set.toArray(); java.util.Arrays.sort(a); 

    您可以使用分隔符将string列表保存为单个string。 例如,这是你的数组:

     ["Italy", "France", "Spain", "Japan", "United States"] 

    您可以将其保存为:

     "Italy;France;Spain;Japan;United States" 

    在代码中:

     SharedPreferences sharedPref = mContext.getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE); Editor editor = sharedPref.edit(); // countries is your List String countriesString = TextUtils.join(";", countries); editor.putString("countries", countriesString); editor.apply(); 

    要检索您的数据:

     final String countriesString = sharedPref.getString("countries", ""); List<String> countries = new ArrayList<>(); if (!countriesString.isEmpty()){ countries = new ArrayList<>(Arrays.asList(countriesString.split(";"))); }