复制矢量在Java中的矢量

res*_*her -3 java collections

我想将一个矢量复制到另一个.问题是如果我改变矢量v1,第二个矢量v2也会改变.我的目标是即使我更改源向量也保持副本完整.

import java.util.Collections;
import java.util.Vector;

public class CopyElementsOfVectorToVectorExample {

  public static void main(String[] args) {

    //create first Vector object
    Vector v1 = new Vector();

    //Add elements to Vector
    v1.add("1");
    v1.add("2");
    v1.add("3");

    //create another Vector object
    Vector v2 = new Vector(v1.size());  

    v2.setSize(v1.size());
    Collections.copy(v2,v1);


    System.out.println("After copy, Second Vector Contains : " + v2);  
  }}
Run Code Online (Sandbox Code Playgroud)

如何保持第二份完整?

JB *_*zet 12

你上面的代码很好,虽然太复杂了.它可以减少到

Vector copy = new Vector(original);
Run Code Online (Sandbox Code Playgroud)

此外,您应该避免使用Vector,而是使用ArrayList.

  • @ user1514847:您的上述代码无法展示您所描述的行为.编辑您的问题,并粘贴代码,以重现您所看到的问题.我感觉你没有在你的向量中存储字符串,并且你没有修改向量,而是修改它包含的对象.字符串是不可变的,我所描述的字符串是不可能的. (2认同)

aio*_*obe 7

[...] 我改变了矢量v1,第二个v2也在改变......我的目标是保持副本完整,即使我改变了源矢量..

向量包含对象的引用.如果更改对象,则两个向量都将显示更改.

我相信你所追求的是一份深刻的副本.

  • 如果OP正在经历向量1的变化影响向量2,我怀疑他在他的"真实"代码中使用字符串. (3认同)