Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。
当Vector或ArrayList中的元素超过它的初始大小时,Vector会将它的容量翻倍,而ArrayList只增加50%的大小,这样,ArrayList就有利于节约内存空间。
可能很多人都不知道ArrayList,但是肯定知道Vector,因为Vector比ArrayList早,所以用的
比较多。但是在java1.2之后的Collection框架中,Vector已经被淘汰了,因为要保持兼容型,
这个类会一直存在,但是确被建议不要使用,这就是软件的兼容性。
对于不熟悉Vector的人那最好了,直接用ArrayList就好了,不过习惯使用Vector的最好也转到ArrayList(虽然Vector可能永远存在JDK中),但是我们没有理由放弃ArrayList使用Vector。
public class Vector extends AbstractList implements
List, RandomAccess, Cloneable, java.io.Serializable
可以看出和ArrayList的声明是一样的,这里不考虑它的实现,来看看主要区别:
1、Vector有而ArrayList没有的方法:addElement,copyInto,elementAt,elements,firstElement,firstElement等等,这里就不一一列举,基本上都是多余的方法,而且还使用了Enumeration(一起被淘汰的)。
2、Vector的实现相对ArrayList稍微复杂,Vector功能并不比ArrayList强大,代码量确是两倍。
3、Vector中的大部分方法都是同步方法,不要认为这是它的优点!同步是要付出代价的,要不然在单例模式中很多人都希望用Double-Check Lock呢(虽然不可行)。因为方法都经过同步,效率自然下降不少。
分享到:
相关推荐
《Vector、ArrayList、List使用深入剖析》-JAVA中文站(www_java-cn_com).htm
vectory是用ES6编写JavaScript向量数学库。 安装 npm install vectory-lib 使用向量,一些例子 首先,您需要加载vectory。 请注意,vectory只是lib的名称,但JavaScript类称为Vector,模块称为vector。 let Vector ...
然而,一个常见的陷阱是,当我们对`vector`进行某些操作时,其迭代器可能会失效,这正是 "[C++][经验总结]vectory迭代器(iterator)失效" 这一主题的核心所在。理解这个问题对于编写稳定且高效的C++代码至关重要。 ...
在实际应用中,变频器可能会遇到各种故障情况,为了帮助用户快速定位并解决问题,本部分将详细介绍丹佛斯VLT系列变频器的故障排除方法,主要包括故障警告与报警表、故障说明以及排除方法。 首先,VLT变频器的故障...
向量这是一个管理项目,是Vue和ant-design-vue框架的基础。项目设置npm install编译和热重装以进行开发npm run serve编译并最小化生产npm run build运行测试npm run test整理和修复文件npm run lint自定义配置请参阅...
例如,如果向量的x、y、z分量分别存储在变量`vectorX`、`vectorY`、`vectorZ`中,我们可以按照以下步骤编写源码来计算向量长度: 1. 计算平方: ```易语言 .积1 = vectorX * vectorX .积2 = vectorY * vectorY ...
* 使用vectorX和vectorY方法来计算时钟的指针位置 六、Java编程基础知识 * 使用import语句来导入Java包 * 使用public关键字来定义公共方法 * 使用private关键字来定义私有变量 * 使用try-catch语句来捕捉异常 七...
基于单相H桥式逆变器拓扑,搭建了一种基于单相矢量控制的调制技术,供大家参考。