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,我不想这样。 我想得到相同的订单,我有保存。 任何人都可以帮助我?

Solutions Collecting From Web of "android的SharedPreferences putStringSet命令/sorting"

这不可能。 集合是无序的集合。

你可以用数字前缀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(";"))); }