有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java中Vector类的对象是静态大小的吗?

我在寻找这个问题的答案。 我从谷歌那里得到的东西- JAVAutil。Java中的向量类。Vector类实现了一个可扩展的对象数组。向量基本上属于遗留类,但现在它与集合完全兼容。它们与ArrayList非常相似,但Vector是同步的,并且有一些集合框架不包含的遗留方法


共 (1) 个答案

  1. # 1 楼答案

    当Java管理自己的内存时,请记住,我们不能确切地知道列表/缓冲区/数组的状态

    向量,比如ArrayList,有一个initialCapacity可以在构造函数中传入参数。从这一刻起,直到垃圾收集器运行,存储这个initialCapacity所需的大小被分配给向量

    与经典数组不同,向量和列表是可增长的。下面是向向量添加元素时发生的情况的快速解释:

    • 如果向量未满,则将元素添加到向量中

    • 如果向量已满,则将向量的大小增加一倍

      • 在内存管理方面,这意味着需要重新分配向量。如果向量后面的空间是自由的,那么向量将使用这个空间。否则,将分配另一块内存,并将整个向量移动到此块

    您可以更改向量在构造函数中的增长量(capacityIncrement)。默认值为2,因此容量增长非常快

    向量是同步的,但不应使用迭代器对其进行迭代:它们不是故障安全的(如果在迭代时修改了向量的结构,迭代器将不会更新)。这就是为什么使用锁和ArrayList通常比使用向量更安全(如果您知道如何正确使用锁的话)

    您可以在这里获得更多详细信息:https://docs.oracle.com/javase/8/docs/api/java/util/Vector.html