【数据结构与算法】ArrayList和LinkedList

【ArrayList】

ArrayList类提供了ListADT的一种可增长数组的实现。使用ArrayList的优点在于,对get和set的调用花费常数时间。其缺点是新项的插入和现有项的删除代价昂贵。除非变动是在ArrayList末端进行。
!!:ArrayList中有一个容量的概念,它表示基础数组的大小。在需要的时候,ArrayList将自动增加其容量以保证它至少具有表的大小。如果该大小的早期估计存在,那么ensureCapacity可以设置容量为一个足够大的量以避免数组容量以后的扩展,再有,trimToSize可以在所有的ArrayList添加操作完成之后使用以避免浪费空间。

【LinkedList】

LinkedList类则提供了List ADT的双链表实现。使用的优点在于,新项的插入和现有项的删除均开销很小,这里假设变动项的位置是已知的。这意味着在表的前端进行添加和删除都是常数时间的操作,有次LinkedList更提供了方法addFirst和removeFrist、addLast和removeLast、以及getFirst和getLast等以有效地添加、删除和访问表两段的项。使用的缺点是他不容易索引,因此对get的调用时昂贵的,除非调用非常接近表的端点(如果get的调用时对接近表后补的项进行的,那么搜索的进行可以从表的后部开始)。!!:用迭代器循环比循环get效率更高。
【例如】remove方法对LinkedList类的使用,最高效的方法如下:
这里写图片描述
对搜索而言,两种都是低效的,对Collection的contains和remove两个方法的调用均花费线性时间。

【ListIterator接口】

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值