首页 新闻 会员 周边

关于Android SharedPreferences保存Set<String>数据类型的问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2013-12-12 21:32

  开发中遇到关于保存数据的问题,之前保存的都是int string等类型的数据,是没有问题的,现在遇到需要保存字符串数组,就采用SharedPreferences的保存Set<String>类型数据的功能。

  其中Set<String>部分用的是它的子类TreeSet<String>(),可以指定存储顺序,设定的是按添加顺序存储,这些都没有问题。运行程序,保存数据,然后获取都是对的,顺序也是对的,但是退出程序,重新进入程序,发现获取的字符串数组顺序是错的。比如说,  

  保存的顺序是 A B C

  获取的顺序是 A B C

  退出重新进入程序获取的顺序是 B C A

  而且此时查看对应的xml文件,退出程序前 顺序是对的,重新进入程序是错的

  我想请问一下如何确保其顺序是对的 ???

往生草的主页 往生草 | 初学一级 | 园豆:172
提问于:2013-10-15 14:51
< >
分享
所有回答(2)
0

我猜,会不会是使用时,用的是treeset,然后系统保存的时候,自动降机为set了。就成没顺序的了。

angelshelter | 园豆:9887 (大侠五级) | 2013-10-15 20:04
0

你所谓的保存顺序是指添加顺序?

TreeSet<T>内部排序顺序由T所实现的Comparable接口决定 

林J | 园豆:202 (菜鸟二级) | 2013-10-30 13:36

看了下源码 发现SharedPreferences在读取配置xml文件时,碰到节点为“set”,即放入的stringSet对象,默认是生成一个HashSet对象进行保存的,即不管在保存的时候你是使用TreeSet还是HashSet,当你读取的时候都是获取到HashSet对象。

支持(0) 反对(0) 林J | 园豆:202 (菜鸟二级) | 2013-10-30 14:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册