Java 如何将堆栈保存到SharedReferences?

Java 如何将堆栈保存到SharedReferences?,java,android,stack,Java,Android,Stack,在我的Android应用程序中,我有一个扩展字符串的自定义堆栈。我想将堆栈保存到SharedReferences,并从SharedReferences检索它 我知道如何将堆栈转换为ArrayList,但我已经了解到SharedReferences只支持集合而不支持列表。那么,如何在保持堆栈顺序的同时将其保存到SP?我如何从SharedReferences中检索它并重建堆栈 我真的不知道该怎么做。非常感谢任何指向正确方向的指针-我不是在要求代码转储答案。这里有一个可能的解决方案 您可以通过序列化将

在我的Android应用程序中,我有一个扩展字符串的自定义堆栈。我想将堆栈保存到SharedReferences,并从SharedReferences检索它

我知道如何将堆栈转换为ArrayList,但我已经了解到SharedReferences只支持集合而不支持列表。那么,如何在保持堆栈顺序的同时将其保存到SP?我如何从SharedReferences中检索它并重建堆栈


我真的不知道该怎么做。非常感谢任何指向正确方向的指针-我不是在要求代码转储答案。

这里有一个可能的解决方案

您可以通过序列化将堆栈转换为字符串,并将字符串保存到共享首选项

ByteArrayOutputStream bos = new ByteArrayOutputStream()
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(stack);
oos.flush();
String base64str = Base64.encode(bos.toByteArray(), Base64.DEFAULT);
...

从首选项加载字符串时,将base64字符串解码为字节,并使用ObjectInputStream对堆栈进行反序列化。

如前所述:


您可能需要将
堆栈
序列化/反序列化为字符串表示形式,然后将其存储在
共享引用

可以(ab)为此使用json格式,但它不能保证结果中各个元素的顺序。不过,为每个元素包含“position”应该很容易,您可以在反序列化后使用它对元素进行排序


或者,您可以提出自己的结构。

您可能需要将
堆栈
序列化/反序列化为字符串表示形式,然后可以将其存储在
共享引用
中。可以(ab)使用json格式,但它不能保证结果中各个元素的顺序。不过,为每个元素包含“position”应该很容易,您可以在反序列化后使用它对元素进行排序。或者,你可以提出你自己的结构。谢谢,真的很有帮助。请写下来作为答案,这样我就可以投票了。谢谢。字符串表示是我使用的方法。