在java中设置两个彼此相等的数组

时间:2014-01-17 13:03:12

标签: java arrays jvm

我正在编写一个程序,它有一个名为data的双数组。

到目前为止我的代码如下。

public class DataSet {
private double[] data;
private int dataSize;

public DataSet(){
    dataSize = 0;
    data = new double [10];
}

public void add(double x){
    if(dataSize>= data.length){
        double[] newData = new double[data.length*2];
        System.arraycopy(data, 0, newData, 0, data.length);
        newData=data;
        newData[dataSize]=x;
        dataSize++;
    }
    else{
        data[dataSize] = x;
        dataSize++;
    }
}
}

正如您所看到的,我正在使用add方法向数组中添加新值。 然而,我不确定的是,当我做

newData=data;

我可以将此更改转到下一行吗?

data[DataSize] = x;

我之所以要问的是,通过设置两个数组是否彼此相等,每当我调用数据时,我实际上是在调用newData。

2 个答案:

答案 0 :(得分:5)

您需要重新分配data。 JVM中还有一些工具可以帮助您。

public void add(double x) {
    if (dataSize >= data.length)
        data = Arrays.copyOf(data, data.length * 2);
    data[dataSize++] = x;
}

答案 1 :(得分:2)

通过分配newData

,您丢失了已创建的数组(存储在newData=data;中)

替换

newData=data;
newData[dataSize]=x;

通过

data = newData;
data[dataSize]=x;