尝试将1D向量添加到2D向量时遇到问题。

我写了如下的特定代码

Vector<Vector<String>> multiVector = new Vector<Vector<String>>();
Vector<String> singleVector = new Vector<String>();

singleVector.add("a,a,a");
System.out.println(singleVector);               // [a,a,a]
multiVector.add(singleVector);
System.out.println(multiVector);                // [[a,a,a]]
singleVector.clear();
singleVector.add("b,b,b");
System.out.println(singleVector);               // [b,b,b]
multiVector.add(singleVector);
System.out.println(multiVector);                // [[b,b,b], [b,b,b]]


在最后一行,我希望是“ [[a,a,a],[b,b,b]]”,但结果是“ [[b,b,b],[b,b,b]]”

怎么了 ?

提前致谢。

最佳答案

singleVector对象添加到multiVector时,并没有复制它。因此,当清除singleVector并将其更改为“ b,b,b”时,您还将“更改”添加到multiVector的(相同)对象。

如果要更改singleVector而不修改multiVector,则应使用singleVector = new Vector<>()而不是clear()对其进行修改。

10-02 09:22