我正在将一个向量复制到另一个相同类型的向量。并修改复制向量,但原始向量也在更新我不明白为什么?
Vector<allocated>finished_copy=new Vector<allocated>();
finished_copy=finished;
我正在打印修改前后的原始向量的值
for(int k=0;k<finished.size();k++) {
System.out.print(finished.elementAt(k).output);
System.out.print(finished.elementAt(k).step);
System.out.println();
}//some modification on finished_copy
并打印原件,但两者不同
请在这方面帮助我
你没有做任何副本。您所做的就是将相同的 Vector 分配给另一个变量:
Before:
finished ------> [a, b, c, d]
After:
finished ------> [a, b, c, d]
^
|
finished_copy ---/
以下是将 Vector 的所有元素复制到另一个 Vector 中的方法:
Vector<Allocated> finishedCopy = new Vector<>(finished);
or
Vector<Allocated> finishedCopy = new Vector<>();
finishedCopy.addAll(finished);
然而,这将创建两个不同的向量,其中包含对相同分配实例的引用。如果您想要的是这些对象的副本,那么您需要创建显式副本。如果不进行复制,更改第一个列表中对象的状态也会更改其在第二个列表中的状态,因为两个列表都包含对相同对象的引用。
注意:
- 类应该以大写字母开头
- 变量不应包含下划线,而应采用驼峰式命名
- 不应该再使用向量。 ArrayList 应该是,从 Java 2 开始。我们现在是 Java 8。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)