有两个Vector对象a和b,如何将a中的成员复制一份给b,注意是复制成员而不是复制成员
引用。
我用b.addAll(a); 结果是复制的成员引用,即我改变a中的成员,b中的成员也会随之改变
。我试了将a中的成员一个个取出,用b.add(...)也一样。
我用的JDK1.4.2

解决方案 »

  1.   

    Vector a = new Vector();
        Vector b = (Vector)a.clone();
      

  2.   

    to  huangdeji(活着就是等死) :
       您说的方法我已经试过了,一样是引用。
      

  3.   

    Vector a = new Vector();
        a.add("111");
        a.add("222");
        Vector b = (Vector)a.clone();
        b.add("333");
        System.err.println("a = " + a.size());
        System.err.println("b = " + b.size());输出结果为:
    a = 2
    b = 3
      

  4.   

    Vector a = new Vector();
        a.add("111");
        a.add("222");
        Vector b = (Vector)a.clone();
        b.add("333");
        b.set(0,"555");
        for(int i = 0;i < a.size();i++){
          System.err.println("a " + i + " = " +(String)a.get(i));
        }
        for(int i = 0;i < b.size();i++){
          System.err.println("b " + i + " = " +(String)b.get(i));
        }    
        System.err.println("a = " + a.size());
        System.err.println("b = " + b.size());
    输出结果为:
    a 0 = 111
    a 1 = 222
    b 0 = 555
    b 1 = 222
    b 2 = 333
    a = 2
    b = 3
      

  5.   

    to  huangdeji(活着就是等死) :
       您说的方法我已经试过了,一样是引用。为什么我运行正常呢?
      

  6.   

    直接一个个add加入对象,就会拷贝对象
      

  7.   

    to huangdeji(活着就是等死):
       b = (Vector)a.clone(); 
       之后,不是说b是a的引用,而是说b[i]是a[i]的引用,改变b[i]的内容a[i]的内容也会改变。
       您试一下如下的程序:public class test{
        public int id;
        public test(int n){   
            id = n; 
        }
    }    Vector a = new Vector();
        Vector b = new Vector();
        for( int i = 0; i < 3; i++) {
            a.add(new test(i + 1));
        }
        b = (Vector)a.clone();
        for ( int i = 0; i < 3; i++) {
             ((test)b.elementAt(i)).id += 10;
        }
        for (int i = 0; i < a.size(); i++) {
            System.out.println("a[" + i + "] = " + ((test)a.elementAt(i)).id);
            System.out.println("b[" + i + "] = " + ((test)b.elementAt(i)).id);
        }
    输出结果:
    a[0] = 11
    b[0] = 11
    a[1] = 12
    b[1] = 12
    a[2] = 13
    b[2] = 13