有一个函数,传进去的是一个VECTOR,在函数里对这个VECTOR如何复制一个同样的VECTOR,操作第二个VECTOR,而不改变外面的VECTOR?void change(vecotr v){vecotr temp = new vector();
temp = v;
temp.setName("这样改变了v吗?");
}VOID MAIN()
{
vector one = NEW VECOTR;
one.setName("CSDN");
 
change(one);
System.out.println(one.getName());
  
}one的name改变了吗?你试试。然后告诉我如何使它不变。也就是相当于如何实现C++里的const参数

解决方案 »

  1.   

    大家请仔细看一下下面这个程序,这个结果输出来是:package test.com;import java.util.Vector;class LevelUp {
        public int level;}public class Main {
        Vector<LevelUp> vLevel = new Vector<LevelUp>();
        public void initLevelUp() {
            LevelUp lu_1 = new LevelUp();
            lu_1.level = 10;
            vLevel.add(lu_1);
            LevelUp lu_2 = new LevelUp();
            lu_2.level = 20;
            vLevel.add(lu_2);
        }    public void change(Vector<LevelUp> vLU) {
            Vector<LevelUp> temp = new Vector<LevelUp>();
            temp = vLU;
            temp.get(0).level = 30;
            for (int i = 0; i <temp.size(); i++) {
                System.out.println("change中 " + temp.get(i).level);
            }
        }    public Main() {
            initLevelUp();
            for (int i = 0; i < vLevel.size(); i++) {
                System.out.println("change前 " + vLevel.get(i).level);
            }        change(vLevel);        for (int i = 0; i < vLevel.size(); i++) {
                System.out.println("change后 " + vLevel.get(i).level);
            }    }    public static void main(String[] args) {
            Main main = new Main();
        }
    }
    这个结果输出来是:
    change前 10
    change前 20
    change中 30
    change中 20
    change后 30
    change后 20
    说明 change 函数 确实改变了 vLevelUp,我想请问,如何能使输出 变成
    change前 10
    change前 20
    change中 30
    change中 20
    change后 10
    change后 20
      

  2.   

    要看你集合里面放的是什么了,如果是基本数据,只要新建集合遍历原来的,数据放进去就行了
    如果放的是引用对象,需要在对象里面重写clone()方法实现深拷贝,
    然后再遍历把每个对象的clone()值放进新的集合里