java - 如何在 Java 中将一个 vector 复制到另一个 vector 而不更新原始 vector ?

标签 java vector copy

我正在将一个 vector 复制到另一个相同类型的 vector 。并修改复制 vector ,但原始 vector 也在更新,我不明白为什么?

Vector<allocated>finished_copy=new Vector<allocated>();
finished_copy=finished;

我在修改前后打印原始 vector 的值

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 分配给另一个变量:

之前:

finished ------> [a, b, c, d]

之后:

finished ------> [a, b, c, d]
                 ^
                 |
finished_copy ---/

以下是将 Vector 的所有元素复制到另一个 Vector 的方法:

Vector<Allocated> finishedCopy = new Vector<>(finished);

Vector<Allocated> finishedCopy = new Vector<>();
finishedCopy.addAll(finished);

然而,这将创建两个不同的 vector ,其中包含对相同分配实例的引用。如果您想要的是这些对象的副本,那么您需要创建显式副本。在不执行复制的情况下,更改第一个列表中对象的状态也会更改其在第二个列表中的状态,因为两个列表都包含对相同对象的引用。

注意:

  • 类应该以大写字母开头
  • 变量不应包含下划线,而是驼峰式
  • 不应再使用 Vector。 ArrayList 应该是,因为 Java 2。我们在 Java 8。

关于java - 如何在 Java 中将一个 vector 复制到另一个 vector 而不更新原始 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26563561/

相关文章:

java - 如何解决 "Unrecognized field"问题?

java - 如何沙箱 SLF4J

java - 迭代映射并在每个结果上运行方法 - APEX

java - JBOSS EAP 7.1连接oracle 12c数据库

C++ - vector 迭代错误

c++ STL remove-if 算法和删除算法问题。

c++ - 在 std::vector 上运行的多个线程:在这种情况下我需要锁吗?

javascript - 根据日期(时间)在 JavaScript 中复制文件

asp.net - 从本地复制文件到远程服务器

java - 为什么我的二维数组克隆不止一次?