Java Arraylist重新初始化

时间:2016-02-29 19:45:57

标签: java arraylist

所以我要做的是在我的Arraylist BDDvars中添加一个字符串数组。 我似乎面临的问题是,在将'temp'(这是一个字符串数组)添加到BDDvars列表后,当我立即打印时 - 我得到了值。但是,在重新初始化temp之后,我的arraylist中出现的值也会被重置。希望得到一些帮助,为什么会发生这种情况。谢谢!

代码在这里:

    List<String[]> BDDvars =new ArrayList<String[]>();

    BDDvars.add(temp);
    System.out.println(BDDvars.get(0)[0]); // this gives value of temp
    for(int n =0;n<11;n++)
      temp[n] = "";
    System.out.println(BDDvars.get(0)[0]); // this gives empty string - why?

1 个答案:

答案 0 :(得分:2)

temp添加到BDDvars时,您没有创建新阵列。相反,BDDvars中的temp和元素都使用相同的引用。

如果要在不修改BDDvars中的值的情况下修改temp,请先复制数组:

String[] tempCopy = new String[temp.length];
System.arraycopy( temp, 0, tempCopy, 0, temp.length);
BDDvars.add(tempCopy);

编辑

或使用clone

BDDvars.add(temp.clone());