Kus*_*alP 346 java vector arraylist
两个数据结构ArrayList和Vector之间有什么区别,你应该在哪里使用它们?
Sev*_*Sev 356
差异
如果没有特定要求使用Vectors,请使用ArrayLists.
同步
如果多个线程同时访问ArrayList,那么我们必须从外部同步代码块,从而在结构上修改列表或简单地修改元素.结构修改意味着从列表中添加或删除元素.设置现有元素的值不是结构修改.
Collections.synchronizedList 通常在创建列表时使用,以避免任何意外的不同步访问列表.
数据增长
在内部,ArrayList和Vector都使用Array保存其内容.当元素插入到ArrayList或Vector中时,如果对象耗尽空间,则该对象将需要扩展其内部数组.Vector默认将其数组的大小加倍,而ArrayList将其数组大小增加50%.
Ant*_*sky 85
正如文档所说,a Vector和a ArrayList几乎是等价的.不同之处在于对a的访问Vector是同步的,而对a的访问ArrayList则不是.这意味着只有一个线程可以一次调用一个方法Vector,并且在获取锁定时会有轻微的开销; 如果你使用的话ArrayList,情况并非如此.一般来说,你会想要使用ArrayList; 在单线程的情况下,它是一个更好的选择,在多线程的情况下,您可以更好地控制锁定.想要允许并发读取?精细.想要为一批10次写入执行一次同步?还好.它确实需要你更多的关心,但它可能是你想要的.另请注意,如果您有ArrayList,则可以使用Collections.synchronizedList函数创建一个同步列表,从而获得相当于一个Vector.
Boh*_*ian 52
Vector尽管它是"同步的"并且仅供学生和其他没有经验的程序员使用,但它是一个不是线程安全的破碎类.
ArrayList 是专业人士和有经验的程序员使用的首选列表实现.
想要线程安全List实现的专业人员使用a CopyOnWriteArrayList.
Oli*_*Oli 26
ArrayList 更新,速度提高20-30%.
如果你不需要明显的东西Vector,请使用ArrayList
use*_*551 23
Vector和ArrayList之间有两个主要的区别.
默认情况下,Vector是同步的,而ArrayList则不是.注意:您可以通过将arraylist对象传递给Collections.synchronizedList()方法来使ArrayList同步.同步意味着:它可以与多个线程一起使用,没有任何副作用.
当空间不足以容纳新元素时,ArrayLists增加前一个大小的50%,而当没有新传入元素的空间时,Vector将增加前一个大小的100%.
除此之外,在编程工作方面,它们之间存在一些实际差异:
什么时候使用哪一个?
注意:即使arraylist增长了100%,你也可以通过ensurecapacity()方法避免这种情况,以确保你在初始阶段分配足够的内存.
希望能帮助到你.
roo*_*ler 14
ArrayList并且Vector都实现List接口并维护插入顺序.但是ArrayList和Vector类之间存在很多差异......
ArrayList 不同步.ArrayList 如果元素数量超过其容量,则增加当前数组大小的50%.ArrayList 它不是遗留类,它是在JDK 1.2中引入的.ArrayList 很快,因为它是非同步的.ArrayList 使用Iterator接口遍历元素.矢量 -
Vector 是同步的.Vector 如果元素总数超过其容量,则增量100%意味着数组大小加倍.Vector 是一个遗产类.
Vector 因为它是同步的,所以它很慢,即在多线程环境中,它会将其他线程保持在runnable或non-runnable状态,直到当前线程释放对象的锁.
Vector使用Enumeration接口遍历元素.但它也可以使用Iterator.
另请参见:https://www.javatpoint.com/difference-between-arraylist-and-vector
sub*_*his 10
基本上,ArrayList和Vector都使用内部对象阵列.
ArrayList: ArrayList类扩展AbstractList并实现List接口和RandomAccess(标记接口).ArrayList支持可根据需要增长的动态数组.它为我们提供了对元素的第一次迭代.ArrayList使用内部Object Array; 它们的默认初始大小为10.如果超出此大小,则集合将自动增加到默认大小的一半(即15).
Vector: Vector类似于ArrayList,但差异在于,它是同步的,其默认初始大小为10,当大小超过其大小时,增加到原始大小的两倍,这意味着新大小将为20. Vector是唯一的类除了ArrayList以实现RandomAccess.Vector有四个构造函数,其中一个采用两个参数Vector(int initialCapacity,int capacityIncrement) capacityIncrement是向量溢出时容量增加的量,因此它可以更好地控制加载因子.
其他一些差异是:
