我正在寻找这个问题的答案。 我从谷歌那里得到的东西 Java中的Java.util.Vector类。 Vector类实现可增长的对象数组。向量基本上属于旧类,但现在与集合完全兼容。它们与ArrayList非常相似,但是Vector是同步的,并且具有一些旧的方法,该方法没有收集框架。
答案 0 :(得分:1)
当Java管理自身的内存时,请记住,我们无法完全知道列表/缓冲区/数组的状态。
载体,像的ArrayLists,具有initialCapacity
,可以在构造参数传递。从这一刻开始,直到垃圾收集器运行时,所需要的大小以存储此initialCapacity
被分配给矢量。
与经典数组不同,Vectors和List是可增长的。下面是当你一个元素添加到您的载体发生了什么的简单说明:
如果载体是未满,则元素添加到向量
如果该矢量是满的,两倍的矢量的大小
可以改变由该矢量生长在构造函数中的量(capacityIncrement
)。默认值为2,因此容量增长非常快。
矢量已同步,但是您不应使用Iterator对其进行迭代:它们不是故障安全的(如果在迭代时修改了Vector的结构,则不会更新Iterator)。这就是为什么使用Locks和ArrayList通常比使用Vectors更安全(如果您知道如何正确使用锁)。
您可以在此处获取更多详细信息:https://docs.oracle.com/javase/8/docs/api/java/util/Vector.html