java集合中的List较量

      记得有这样的辩证道理:世界上不可能有两片完全相同的叶子,人不能两次踏进同一条河流。

      看到这与今天的主题有什么关系是吧,可以体会一下辩证道理的含义。我们知道list是集合的一种类型是一个接口,而ArrayList、LinkedList与vector是list的三个实现类,都实现了Collecttion接口,然而他们的实现方式不同。List家族有三兄弟ArrayList、LinkedList与Vector,有没有你想起《三国演义》中桃园三结义的三兄弟使双股锏的刘备、使丈八蛇矛枪的张飞和使青龙偃月刀的关羽结缘亲兄弟,个性还可异同:


      从上面的比较可见,Vector与ArrayList在线程安全上不同之外,其他差别是微乎其微的。Vector是基于Array的List,在性能上由于ArrayList不是同步相比较优,更多的情况是使用ArrayList,需要注意的一点是在多线程的情况下管理线程安全问题。synchronized保证Vector线程安全,考虑多线程安全问题,两者中Vector是一个不错的选择。

  两个类都实现了List接口他们都是有序集合、存储在这两个集合中的元素位置都是有顺序的,可以按位置索引号取出某个元素,其中的数据是允许重复的。区别在同步性和数据增长性

      而ArrayList与LinkedList呢,都实现Collecttion接口是肯定的,并且在列表末尾增加一个元素所花的开销都是固定的。然而差别相比较大,它们的本质区别不同的数据结构,前者是数组结构后者为列表结构。

      ArrayList是用数组实现的不是真正的链表,是一个动态数组其容量能自动增长,在初始化的时候它先对数组设置一个初始容量,当空间不够的时候会重新构建一个容量更大的数组。LinkedList则是真正的链表。主要表现在:

      1.内部增加一项元素:ArrayList对数组重新进行分配,而LinkedList这个开销是统一的;

      2.中间插入或删除元素:ArrayList剩余的元素都会被移动,而LinkedList开销是固定的;

      3.查询速度方面:ArrayList支持高效的随机元素访问较快,LinkedList不支持较慢;

      4.空间浪费当面:ArrayList结尾预留容量空间,LinkedList每一个元素都需要消耗相当的空间。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值