概述
Vector底层也是数组,跟ArrayList很像(先看下ArrayList,再看Vector会很轻松),ArrayList可参考下文,并且由于效率低,已经被淘汰了,大概瞅瞅得了
sheng的学习笔记-ArrayList源码分析_coldstarry的博客-CSDN博客
差异的:
Vector是线程安全的,不过效率低,在add等位置加了synchronized
ArrayList是线程不安全的,效率高
底层是数组
初始化
默认申请10个元素的数组
新增元素
add中有synchronized(加锁),多线程有用,但会速度慢
另外如果不设置capacityIncrement,默认每次扩容两倍(ArrayList是1.5倍),但可以自己设置扩容的步长(初始化的时候作为参数可以传进去)
指定位置上新增数据,做内存挪移,把指定位置的元素往后挪,空出个位置。然后将新的元素插入到空位置上
删除元素
找到指定的位置,计算剩余的需要挪的位置,如果删除最后一个元素比较快,如果删除中间的元素要做内存挪移,然后把最后一个元素置空
查找元素
根据对象查找
跟ArrayList一样的配方,只是加了个锁