Java中的 Vector、ArrayList和LinkedList

    Vector类继承了AbstractList抽象类,其内部数据存储方式是一个对象数组,几乎所有的方法都通过synchronized关键字修饰,支持多线程的同步,安全性较好但访问效率较低。

    ArrayList类同样继承了AbstractList抽象类,它的内部数据存储方式与Vector相同也是一个对象数组,内部方法与Vector也很相似,最主要的不同在于ArrayList中的方法没有使用Synchronized修饰,这个类的使用并不保证线程安全。

    上述两个类均实现了List, RandomAccess, Cloneable, java.io.Serializable接口,允许对内部存储的元素进行快速随机的访问。当内部数组的存储到达上限并还需要继续加入元素时,两个类的做法都是创建一个更大的新数组,然后将原来的数据拷贝到新的数组中来。由于两个类内部都是通过数组实现的,在查找和遍历等方面,效率很高,然而在插入、删除、复制等需要移动数组内元素的操作时,效率很低下。

    LinkedList与前两个类不同,它的内部不通过数组实现,而是通过链表实现的(内部类Node),他在数据的删除、插入等操作上非常的灵活,效率比前两个都要高,但是在查找和遍历上就要慢很多。通过对LinkedList的封装,我们可以很容易的实现栈、队列、双向队列等数据结构。而且对存储数据量而言也不存在前两个类会受到数组大小限制而需要复制数组这样的缺点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值