为什么我的add方法会覆盖Vector?

Nat*_*n H 1 java vector

我正在使用其add(Object)方法将对象添加到java Vector中.在我的示例中,前5个对象是相同的,后跟2个不同于前5个的实例.出于某些原因,只要我插入不同的第一个,它就会将整个向量更改为该值!

'values'是一个迭代器,包含'1','1','1','1','1','2','2'之类的东西


Vector temp = new Vector();    
while (values.hasNext()) {
     temp.add(values.next());
     System.out.println(temp.toString());
}
Run Code Online (Sandbox Code Playgroud)

它会输出类似的东西

[1]
[1,1]
[1,1,1]
[1,1,1,1]
[1,1,1,1,1]
[2,2,2,2,2,2]
[2 ,2,2,2,2,2,2]

我尝试使用LinkedList,以及使用add(object,index).同样的事发生了.

eri*_*son 10

我怀疑,不知何故,你从迭代器获得的"对象"实际上是对可变对象的单个实例的多个引用,它将其状态从"1"更改为"2".我无法猜测的是它在这种明显的单线程操作中如何改变状态.

你能发布更完整的代码吗?显示values来自何处以及如何初始化.