ArrayList、LinkedList、Vector的区别

相同点

ArrayList、Vector和LinkedList类均在java.util包下,均为可伸缩数组,即可以动态改变长度的数组

1.ArrayList、Vector和LinkedList区别

实现:

  • ArrayList和Vector都是基于存储元素的Object[] array来实现的,它们会在内存中开辟一块连续的空间来存储
  • LinkedList是采用双向列表来实现的

查询速度

  • ArrayList、Vector 因为数据存储是连续的,所以它们支持用下标来访问元素,索引数据的速度比较快
  • 对数据的索引需要从列表头开始遍历,因此用于随机访问则效率比较低

插入效率

  • 只在集合的末端增加、删除元素时,使用ArrayList或Vector效率比较高
  • 对数据的操作主要为指定位置或删除操作时,使用LikedList效率比较高

2.ArrayList和Vector的区别

扩容
ArrayList和Vector都有一个初始化的容量大小,当里面存储的元素超过初始的大小时就需要动态地扩充它们的存储空间。

  • ArrayList默认扩充为原来的1.5倍(没有提供方法来设置空间扩充的方法)
  • Vector默认扩充为原来的两倍(每次扩充空间的大小可以设置)

是否线程安全
ArrayList和Vector最大的区别就是synchronization的使用

  • ArrayList的方法没有一个是同步的,所以ArrayList不是线程安全的
  • Vector的绝大多数方法(如add,insert,remove,set,equals,hashcode)都是直接或间接同步的,所以Vector是线程安全的

性能
由于Vector提供了线程安全的机制,其性能上也要稍逊于ArrayList

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值