存储链表的简单方法

Simple way to store a Linked List

您好,我目前正在开发一个 Android 应用程序,当用户从应用程序进程中终止该应用程序时,我需要存储一个 LinkedList。我看过这个问题easy way to save a LinkedList in a Android Application?

接受的答案似乎不起作用,AndroidStudio 抱怨它期望数组列表而不是链表。我意识到这个问题已经有 3 年历史了,那段时间一定发生了一些变化,因为它不起作用。

链表是否可以再存储在 Bundle 中?或者有人有更好的方法让我的 LinkedList 持久化吗?

干杯

正如我在评论中提到的,您无法将 LinkedList 保存到捆绑包中,但是您可以将 LinkedList 转换为 ArrayList保存它,然后在您再次将其加载到您的应用程序中时将其转换回来。 ArrayListLinkedList 的构造函数接受 Collection 并将按照其迭代器 returns 的顺序添加元素(即 LinkedList 的 FIFO)

public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    ArrayList<MyObject> listToSave = new ArrayList<MyObject>(myLinkedList);
    outState.putParcelableArrayList("key", listToSave);
}

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (savedInstanceState != null) {
        ArrayList<MyObject> loadedList = savedInstanceState.getParcelableArrayList("key");
        myLinkedList = new LinkedList<MyObject>(loadedList);
    }
}