ArrayList 与LinkedList 区别

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

顺序表

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

链表   

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

                  
由上面的比较可以得出结论: 进行查找,很少做插入和删除操作时或只用来存储数据时,采用ArrayList为宜, 对于频繁进行插入和删除的线性表,宜采用LinkedList。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值