我一直试图通过putStringSet
中的SharedPreferences
API将一个堆栈存储在SharedPreferences中。
在write方法中,我这样做:
putStringSet(KEY, new LinkedHashSet(stack));
当我读到时,我这样做:
getStringSet(KEY, null)
成Set
。
我通过使用Collections.reverse(list)
转换为列表以及堆栈的所有元素来反转集合中的元素。
当我写入SharedPreferences
时,事情很棒,但是当我阅读时,元素的顺序完全搞砸了。
有什么想法吗?
答案 0 :(得分:4)
您可以将堆栈元素转换为逗号分隔的String,然后使用putString保存它。
例如,如果您的堆栈包含以下内容:
| "4" |
| "3" |
| "2" |
| "1" |
| "0" |
-------
您应该将其转换为String" 0,1,2,3,4"并将其保存到SharedPreferences
。
要重建堆栈,请从SharedPreferences
获取字符串,用逗号分隔符将其拆分并按顺序推送到堆栈。
答案 1 :(得分:1)
SharedPreferences
可能不是最好的解决方案。使用平面文件或数据库可以更好地满足您的需求。话虽如此,您可以通过单独存储值并以编程方式为每个元素生成一个键来实现此目的。