在我的Android应用中,我有一个自定义堆栈,用于扩展Stack。我想将堆栈保存到Sharedpreferences,并从SharedPreferences中检索它。
我知道如何将堆栈转换为ArrayList但我已经读过,SharedPreferences只支持集合而不是列表。那么如何在保留订单的同时将堆栈保存到SP呢?如何从SharedPreferences中检索它并重建堆栈?
我真的迷失了如何处理这个问题。任何指向正确方向的人都非常感激 - 我不是要求代码转储答案。
答案 0 :(得分:1)
这是一种可能的解决方案,
您可以通过序列化将堆栈转换为字符串,并将字符串保存为共享首选项
ByteArrayOutputStream bos = new ByteArrayOutputStream()
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(stack);
oos.flush();
String base64str = Base64.encode(bos.toByteArray(), Base64.DEFAULT);
...
从首选项加载字符串时,将base64字符串解码为字节,并使用ObjectInputStream对字符串进行反序列化。
答案 1 :(得分:1)
根据之前的评论:
您可能必须将Stack
序列化/反序列化为字符串表示形式,然后可以将其存储在SharedPreferences
中。
有可能(ab)使用json格式,但它不保证结果中各个元素的排序。它应该很容易包含每个元素的“位置”,然后您可以在反序列化后使用它来对元素进行排序。
或者,您可以提出自己的结构。