【发布时间】:2014-12-12 11:48:45
【问题描述】:
我想将字符串列表保存到 SharedPreferences 对象。我使用这些方法,但如果一组是 (2,1,3),当我阅读它时,列表是 (1,2,3)。我不想在读取数组时对集合进行排序。
编辑:当我使用 getSharedPreferences 时,该集合已经在 sharedPreferences 对象中排序。
private List<String> load() {
Set<String> values = sharedPreferences.getStringSet(PREF_KEY, null);
return new ArrayList<String>(values);
}
private void save(List<String> values) {
//values = (2,1,3)
Set<String> valuesSet = new HashSet<String>(values);
//valuesSet = (1,2,3)
sharedPreferences.edit()
.putStringSet(PREF_KEY, valuesSet).commit();
}
【问题讨论】:
-
阅读documentation of HashSet。 > 这个类实现了 Set 接口,由一个哈希表(实际上是一个 HashMap 实例)支持。 它不保证集合的迭代顺序;特别是,它不保证顺序会随着时间的推移保持不变。这个类允许空元素。
-
我的问题是,当我执行 getSharedPreferences() 时,该集合在 sharedPreferences 对象中进行排序。
-
您是否每次都得到排序值?检查重新运行应用程序 3-4 次并查看值。
-
是的,我在调试时检查过。
-
当您将 HashSet 添加到共享偏好时,您的订单将永远不会得到保证
标签: android arrays list set sharedpreferences