存储链表的简单方法
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
保存它,然后在您再次将其加载到您的应用程序中时将其转换回来。 ArrayList
和 LinkedList
的构造函数接受 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);
}
}
您好,我目前正在开发一个 Android 应用程序,当用户从应用程序进程中终止该应用程序时,我需要存储一个 LinkedList。我看过这个问题easy way to save a LinkedList in a Android Application?
接受的答案似乎不起作用,AndroidStudio 抱怨它期望数组列表而不是链表。我意识到这个问题已经有 3 年历史了,那段时间一定发生了一些变化,因为它不起作用。
链表是否可以再存储在 Bundle 中?或者有人有更好的方法让我的 LinkedList 持久化吗?
干杯
正如我在评论中提到的,您无法将 LinkedList
保存到捆绑包中,但是您可以将 LinkedList
转换为 ArrayList
保存它,然后在您再次将其加载到您的应用程序中时将其转换回来。 ArrayList
和 LinkedList
的构造函数接受 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);
}
}