Java 向量如何同步和向量如何通过将数组大小加倍来增加其大小

Java 向量如何同步和向量如何通过将数组大小加倍来增加其大小,java,vector,synchronization,size,Java,Vector,Synchronization,Size,这是我的密码 import java.util.Iterator; import java.util.Vector; public class Simple { public static void main(String args[]) { Vector v1 = new Vector(); v1.add(5); v1.add(6); v1.add(9); v1.add(4); v1.ad

这是我的密码

import java.util.Iterator;
import java.util.Vector;

public class Simple {
    public static void main(String args[]) {
        Vector v1 = new Vector();
        v1.add(5);
        v1.add(6);
        v1.add(9);
        v1.add(4);
        v1.add(1);

        Iterator it = v1.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
}
当我运行这个程序时,输出就来了

五, 6. 9 4. 1. 所以我对它的定义感到有点困惑:

1.向量是同步的。 2.向量通过将数组大小加倍来增加其大小

请解释一下

1.向量是同步的

这意味着向量方法在默认情况下是同步的,因此对向量的操作是线程安全的

2.Vector increases its size by doubling the array size
向量的初始容量为10。当向量的大小达到10时,它的容量就会加倍。因此,如果大小是10,那么容量将是20

  • 若要检查向量是否已同步(即..),必须使用多个线程并尝试写入向量。。你没有这样做

  • 是的,vector就是这样设计的。。但是,如果执行vector.size(),它会显示当前向量中的元素数(而不是实际分配的大小)。查看vector的源代码,了解如何实现大小更改

  • Vector是同步的,这意味着如果您从不同的线程执行某些操作(例如添加元素),您将不会得到意外的结果,这意味着每个操作都将正确执行
  • 当您使用
    new vector()
    创建向量时,它的内部数组将以一定的大小初始化,因此它只能包含一定数量的值。但是,当您尝试添加值时,当内部数组的一半以上被填充时,内部数组将以加倍的大小重新初始化,以便您可以根据需要包含任意多的值

  • 输出有什么问题?您对此的预期输出是什么?它实际上不会使数组大小增加一倍。但创建一个大小为原来两倍的新数组,并将内容从旧数组复制到新数组中。旧的数组被丢弃,将被垃圾收集。旁注:Vector已经过时,在大多数情况下,您应该使用ArrayList作为替换。不完全是,正如我在回答中所说的那样,容量是之前的两倍。您是否可以添加一些代码来检查您所说的add()同步的Vector方法?您能告诉我如何使用代码进行检查吗?内部数组的大小如何调整取决于实现。从OpenJDK到Oracle的JDK可能有所不同。是的,Scaridge和arora是对的。。我只是想把它描述成它是做什么的,而不是它是如何做的