Donnerstag, April 9, 2020

Einstellung von zwei arrays sind gleich in java

Ich Schreibe ein Programm, das einen double-array mit dem Namen Daten.

Mein code bisher ist die folgende.

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++;
    }
}
}

wie Sie sehen können ich bin das hinzufügen neuer Werte in das array mithilfe der add-Methode.
Aber was ich unsicher bin, ist, dass, wenn ich

newData=data;

Kann ich nur diese änderung in die nächste Zeile?

data[DataSize] = x;

Der Grund, warum ich Frage, ist, ob die durch die Einstellung der zwei arrays sind gleich, wenn ich Anruf-Daten, ich bin in der Tat ruft newData.

  • Sie ersetzen möchten data mit newData Sie wollen also data = newData;
  • System.arraycopy(data, 0, newData, 0, data.Länge); newData=data; erklären Sie das bitte
  • Ja Sie verlieren newData. Jedenfalls scheint es mir, sind Sie auf Ihrem Weg zu re-code ArrayList wieder alles vorbei. 🙂
  • Ich bin mir nicht sicher, dass Sie verstehen Java. Arrays haben keine Namen und werden nicht kopiert oder überschrieben werden mit Gleichheitszeichen. Sie haben Variablen (benannt), die Werte enthalten (native Typen wie int oder long) oder Referenz auf Objekte (wie arrays oder irgendetwas, dass nicht von einem einheitlichen Typ, Wert). Das Gleichheitszeichen wird der Wert der variable an den Wert eines Ausdrucks ausgewertet wird, in diesem Fall kopieren Sie die Referenz auf ein Objekt überschreibt den vorherigen Wert der Variablen (nicht die Werte im array).
InformationsquelleAutor ymc331 | 2014-01-17

2 Kommentare

  1. 2

    Haben Sie verloren Ihre erstellten array (gespeichert in newData) durch die Zuordnung newData=data;

    Ersetzen

    newData=data;
    newData[dataSize]=x;

    durch

    data = newData;
    data[dataSize]=x;
    • Das ist genau das, was ich wollte. Vielen Dank 🙂
  2. 5

    Müssen Sie neu zuweisen data. Es gibt auch einige tools, die in der JVM, die Ihnen helfen.

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

Kostenlose Online-Tests