Java容器之ArrayList、LinkedList和Vector

    ArrayList拥有顺序表结构,因此其便于查询,而在插入和删除方面的效率却比较低。因为当你在ArrayList某个索引位置上插入或删除数据时,该位置之后的所有数据都将发生位移,所以效率比较低下。如果需要大量的插入和删除操作,建议使用LinkedList。

    ArrayList又称为动态数组,因为它能够动态增加或减少元素。就比如当你在往ArrayList这个集合类型中插入元素时,如果元素的数目超出了其内部数组目前的长度,则ArrayList就会将内部数组的数目扩展到原来的1.5倍。但如果需要保存大量的元素时,Vector的效率会更高一点,因为Vector每次自动增长,都会默认扩展到原来的2倍。   

    ArrayList是异步的,因此其也是非线程安全的,而Vector是同步的,因此也是线程安全的,但同步意味的要多花费机器时间,因此如果想要效率选择ArrayList,如果想要线程安全选择Vector

    LinkedList拥有链式表结构,它的对象是放在一个独立节点上,节点包含了下一个节点与上一个节点的引用。如果需要对某个节点进行插入和删除操作,只要修改该节点前后节点的引用关系,效率较高;但若要访问其中的某个节点,则每次都必须从头部或者尾部开始遍历,这样的效率是远低于ArrayList的。

    Vector是一个能够自动增加长度的对象数组,这个功能和ArrayList相同,但不同之处在于ArrayList每次默认扩展50%的数组长度,而Vector每次默认扩展100%长度,而且Vector是同步的而ArrayList是异步的,Vector还拥有indexOf方法,而ArrayList没有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值