java - 在 Java 中复制对象/数组

标签 java

我有一个以数组作为参数的对象,我试图以一种可以修改一个对象而不修改另一个对象的方式复制该对象。 这是我的类(class):

public class Matrix {
 int rows[];

 Matrix() {
    rows = new int[9];
 }

 int[] getRows() {
    return rows;
 }

 void setRow(int x, int y) {
    rows[x] = y;
 }

 int getRow(int x) {
    return rows[x];
 }
}

我想做这样的事情:

(Consider Object Matriz x is all filled with values)
Matrix k = new Matrix();
k = x;
(Now I want to modify a specific column without of k without modifying a column of x)
k.setRow(3, 3);

但是发生的情况是,由于我执行 k = x; 时的引用,我得到的两个数组是相同的;

如何避免这种情况并复制它们而不是创建引用?我想避免逐个单元复制,以避免增加运行时间。 (一种解决方案是创建一个原始类 Matriz,其子类 Cell 具有 int 值,但除此之外?)

谢谢

最佳答案

首先,你将你的类命名为Matrix,但它不是一个矩阵。它只有一维,因此Vector 会更准确。

为了复制您的实例,您可以使用复制构造函数。

Matrix(Matrix other) {
    rows = Arrays.copyOf(other.rows, other.rows.length);
}

您通过以下方式创建 x 的副本:

Matrix k = new Matrix(x);

关于java - 在 Java 中复制对象/数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29074837/

相关文章:

java - Hibernate 和 Java 中的数据类子类化

java - 如何使用内存数据库编写测试用例?

java - Intellij Spring 项目到 eclipse 不工作

java - GOOGLE_APPLICATION_CREDENTIALS 在 JAVA 中不起作用

java - 解析java流

java - Smack 聊天创建两个线程

java - Uri 文件大小始终为 0

java - 使用正则表达式在 html 中查找 url 时遇到问题?

java - 创建一个映射/缓存,它将使用默认构造函数生成的对象作为新键

java - 关键字 final 对 JVM 有什么影响吗?