您的位置:首页 > 其它

ArrayList 与LinkedList 区别

2009-08-10 17:06 375 查看
ArrayList 与LinkedList 区别ArrayList 和LinkedList 都继承了List 接口,具有相同的行为,但是它们对某些操作的性能缺有着天壤之别。ArrayList是以顺序表的方式来存存储数据的,而LinkedList是链表的实现。下面来看一下俩种数据结构的区别:

顺序表 分配方式:静态分配。程序执行之前必须明确规定存储规模。若线性表长度n变化较大,则存储规模难于预先确定估计过大将造成空间浪费,估计太小又将使空间溢出机会增多。
存储密度:为1。当线性表的长度变化不大,易于事先确定其大小时,为了节约存储空间,宜采用顺序表作为存储结构。
存取方法:随机存取结构,对表中任一结点都可在O(1)时间内直接取得线性表的操作主要是进行查找,很少做插入和删除操作时,采用顺序表做存储结构为宜。
插入删除操作:在顺序表中进行插入和删除,平均要移动表中近一半的结点,尤其是当每个结点的信息量较大时,移动结点的时间开销就相当可观。

链表 分配方式:动态分配只要内存空间尚有空闲,就不会产生溢出。因此,当线性表的长度变化较大,难以估计其存储规模时,以采用动态链表作为存储结构为好。
存储密度:<1
存取方法:顺序存取结构,链表中的结点,需从头指针起顺着链扫描才能取得。
插入删除操作:在链表中的任何位置上进行插入和删除,都只需要修改指针。对于频繁进行插入和删除的线性表,宜采用链表做存储结构。若表的插入和删除主要发生在表的首尾两端,则采用尾指针表示的单循环链表为宜

由上面的比较可以得出结论: 进行查找,很少做插入和删除操作时或只用来存储数据时,采用ArrayList为宜, 对于频繁进行插入和删除的线性表,宜采用LinkedList。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: