创建向量数组的副本以进行进一步修改的方法

时间:2016-05-05 11:16:27

标签: java arrays

我正在创建自己的Vector类,它能够执行许多不同的计算。但是我似乎遇到了障碍。我有一些方法,如排序,标量加/乘和反转方法,我需要执行,但是我想先创建一个向量的副本,以便我可以修改它。 这是我的排序方法的代码作为一个例子:

    Vector vector = new Vector(length);

    for (int i = 0; i < length - 1; i++) {
        for (int j = i + 1; j < length; j++){
            if (vector.elements[i] > vector.elements[j]) {
                long temp = vector.elements[i];
                vector.elements[i] = vector.elements[j];
                vector.elements[j] = temp;
            }
        }
    }
    return vector;

在上面的代码中,每当我似乎运行它时,输出始终为0.但是我知道我需要创建用户输入的矢量克隆并将其存储在Vector "vector"对象中。 我怎样才能做到这一点?

我所拥有的实例变量如下:

public class Vector {

private Long sum;
private Long mode;
private Long median;
private Long minimum;
private Long maximum;

private final int length;
private final long[] elements;

public Vector(int length) {

    this.sum = null;
    this.mode = null;
    this.median = null;
    this.minimum = null;
    this.maximum = null;

    this.length = length;
    this.elements = new long[length];

1 个答案:

答案 0 :(得分:2)

您只需要一个复制构造函数,即Vector(Vector other)

  • 使用this.sum = other.sum;等分配所有标量字段;
  • 使用以下方式分配数组字段:

    this.elements = Arrays.copyOf(other.elements, other.elements.length);
    

(不清楚为什么需要length字段,因为elements.length == length - 只需使用elements.length