2011-12-02 73 views
0

我想使用一个列表来存储某些类型的对象(为了简单起见,我们可以说 - 书),所以我可以在listview对象中显示它们。 IM还挺新本,所以我要求更先进和有经验的用户的帮助有关以下的争论 -LinkedList vs ArrayList - 要求实现想法的观点

  1. 使用哪一个?链表是我熟悉的东西。然而,我如何让应用程序保持列表?我应该将每个对象的细节保存在XML中吗?如果我这样做,是不是更好地使用Arraylist? (请在回答中排除与处理时间有关的事情)。

  2. 如果不是通过xml - 即使应用程序关闭并且稍后激活,我如何“存储”列表供以后使用?

谢谢!

回答

1

的ArrayList是很好用。它们也适合迭代通过LinkedList s。

OTOH,LinkedList不需要调整大小,当内存不足以容纳更多节点时,它只会耗尽空间。如果您有大量数据增长,或者您正在进行大量顺序添加/删除操作,那么LinkedList将在性能上胜出。

有时候,你需要同时随机存取增长,在这种情况下,你需要做出哪些标准要更高性能的一个判断。

在你目前使用的情况下,我可能会选择一个ArrayList,你可能知道的名单应该多大,它不会在大小经常变化的,如果你想在显示这件事情一个GUI,你可能需要做索引查找。

就存储列表而言,XML与CSV文件(或普通的行分隔文本文件),YAML,JSON甚至类的序列化都是一种可选方式,选择最简单和最方便的方式您。

+0

ArrayList的调整大小实际上非常快,并且不会真正影响添加元素的全局复杂性,这往往会导致长期的o(1)。 _removing_的元素,在另一方面,为O(n),无论怎样,对O(1)为一个链表 – njzk2

0

我宁愿过的LinkedList ArrayList的,因为它有方法来操作内部使用存储列表

如果我要使用它作为一个栈,队列中的数组的大小,或双端队列然后我会使用一个LinkedList