ArrayList和LinkedList的区别是什么?举例说明LinkedList可实现的功能。

对于处理一列数据项, Java 提供了两个类 ArrayList 和 LinkedList , ArrayList 的内部实现是基于内部数组 Object[] ,所以从概念上讲,它更像数组,但 LinkedList 的内部实现是基于一组连接的记录,所以,它更像一个链表结构,所以,它们在性能上有很大的差别。

在 ArrayList 的前面或中间插入数据时,必须将其后的所有数据相应的后移,这样必然要花费较多时间,所以,当你的操作是在一列数据的后面添加数据而不是在前面或中间,并且需要随机地访问其中的元素时,使用 ArrayList 会提供比较好的性能;

而访问链表中的某个元素时,就必须从链表的一端开始沿着连接方向一个一个元素地去查找,直到找到所需的元素为止,所以,当你的操作是在一列数据的前面或中间添加或删除数据,并且按照顺序访问其中的元素时,就应该使用 LinkedList 了。

如果在编程中,两种情形交替出现,这时,可以考虑使用 List 这样的通用接口,而不用关心具体的实现,在具体的情形下,它的性能由具体的实现来保证。

案例: LinkedList 实现堆栈

案例说明

ArrayList 的查询效率比较高,增删动作的效率比较差,适用于查询比较频繁,增删动作较少的元素管理的集合。 LinkedList 的查询效率低,但是增删效率很高。适用于增删动作的比较频繁,查询次数较少的元素管理集合。

ArrayList , LinkedList 都是线程不安全的。

实现堆栈 1 )数组( ArrayList ,增删效率比较低,不适合)

        2 ) LinkedList (实现堆栈的好方法)

        3 ) java.util.Stack 类, Stack 是 Vector 的子类, Vector 类是一个线程安全的(是一个重量级的类),并继承了 Vector 的方法, Verctor 类和 ArrayList 的功能近乎相同。(不推荐使用 Stack 类来实现堆栈)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值