LinkedList、ArrayList、Vector对比

  1. Collection的类继承图
    这里写图片描述

  2. ArrayList、LinkedList与Vector的对比

    从图中可以看到这三个集合都实现了List接口,所有使用方式都很相同,区别在于因为实现的方式不同,所以对不同的操作有不同的效率

    ArrayList 和Vector底层是采用数组方式存储数据,它们本质上是一个可以改变大小的数组。Vector由于使用了synchronized方法(线程安全),所以性能上比ArrayList要差,如果你的程序本身是线程安全的(没有多个线程之间共享同一个对象/集合),这时使用ArrayList是一个更好的选择。LinkedList使用双向链表实现存储,在添加和删除元素的时候具有更好的性能,但是随机存取比较慢。

    LinkList和ArrayList在添加元素时会申请比元素本身更大的空间。Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%。

    LinkedList还实现了Queue接口,因此提供了更多的方法。

    对ArrayList和LinkedList而言,在列表末尾增加一个元素所花的开销都是固定的。对 ArrayList而言,主要是在内部数组中增加一项,指向所添加的元素,偶尔可能会导致对数组重新进行分配;而对LinkedList而言,这个开销是统一的,分配一个内部Entry对象。   在ArrayList的 中间插入或删除一个元素意味着这个列表中剩余的元素都会被移动;而在LinkedList的中间插入或删除一个元素的开销是固定的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值