首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >安卓SharedPreferences putStringSet排序

安卓SharedPreferences putStringSet排序
EN

Stack Overflow用户
提问于 2012-11-19 09:01:23
回答 4查看 12.7K关注 0票数 23

我尝试保存/恢复一组字符串,除了一件事之外,所有操作都正常。当我创建我的字符串时,我把:

代码语言:javascript
复制
Set<String> set = new HashSet<String>();
for(int i=0; i<toggles.size();i++){
   set.add(toggles.get(i).serialise());                 
}

顺序例如是“蓝牙”、“应用”、“数据”。当我回来的时候:

代码语言:javascript
复制
Set<String> set = prefs.getStringSet(key, new HashSet<String>());
for (String toggle : set){
    Toggle t = new Toggle();
    t.deserialize(toggle);
    toggles.add(t); 
}

我得到“应用程序”“蓝牙”“数据”,他们是按名称排序的,我不想要这个。我想要得到与保存的订单相同的订单。有人能帮我吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-19 09:04:15

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

票数 23
EN

Stack Overflow用户

发布于 2012-11-19 16:15:56

您可以用数字作为字符串的前缀,例如00application01bluetooth02data,按照您想要取出它们的顺序。将从getStringSet返回的Set<String>放入Array<Set>中并对其进行排序。

代码语言:javascript
复制
Set<String> set = prefs.getStringSet(key, new HashSet<String>());
Array<String> a = set.toArray();
java.util.Arrays.sort(a);
票数 14
EN

Stack Overflow用户

发布于 2017-07-11 21:26:16

您可以将字符串列表保存为带有分隔符的单个字符串。例如,这是您的数组:

代码语言:javascript
复制
["Italy", "France", "Spain", "Japan", "United States"]

您可以将其另存为:

代码语言:javascript
复制
"Italy;France;Spain;Japan;United States"

在代码中:

代码语言:javascript
复制
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();

要检索数据,请执行以下操作:

代码语言:javascript
复制
final String countriesString = sharedPref.getString("countries", "");
List<String> countries = new ArrayList<>();
if (!countriesString.isEmpty()){
    countries = new ArrayList<>(Arrays.asList(countriesString.split(";")));
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13446367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档