2 Stimmen

Wie löschen Sie die ersten Elemente aus einem Array von Zeichenfolgen?

Ich habe eine Methode, die in einem String-Array nimmt und findet die Durchschnitte der alle paar Elemente abhängig von der Länge. Ich möchte, dass die Methode die ersten paar Elemente im Array je nach dem Wert von Offset zu löschen.

public static double[] getMovingAverage(String[] priceList, int length, int offset){

    double[] newPriceList = convert(priceList);

    int listLength = newPriceList.length;
    int counter = 0;
    double listsum;
    double[] movingAverage = new double[listLength];

    try{
        for (int aa = 0; aa < listLength-1; aa++){
            listsum = 0;
            for (int bb = 0; bb < length; bb++){
                counter = aa+bb;

                listsum = listsum + newPriceList[counter];
            }
            movingAverage[aa] = listsum / length;
        }
        if (offset>0){

                        //remove first #offset# elements

        }
    }catch(Exception e){
        System.out.println(e);
    }
    return movingAverage;
}

*Anmerkung: convert(); wandelt String[] in double[] um

6voto

aioobe Punkte 397211

Arrays haben in Java eine feste Länge. (Sie können die Länge eines Arrays nicht ändern.)

Sie können jedoch ein neues Array mit dem ersten offset Elemente ganz einfach entfernt werden:

double[] movingAverage = { 0.1, 0.2, 1.1, 1.2 };
int offset = 2;

// print before
System.out.println(Arrays.toString(movingAverage));

// remove first offset elements
movingAverage = Arrays.copyOfRange(movingAverage, offset, movingAverage.length);

// print after
System.out.println(Arrays.toString(movingAverage));

Ausgabe:

[0.1, 0.2, 1.1, 1.2]
[1.1, 1.2]

2voto

Ross Larson Punkte 2297

Von Java 6 API

p copyOfRange(double[] original, i int to)

Kopiert den angegebenen Bereich der Datei angegebenen Arrays in ein neues Array. Der Anfangsindex des Bereichs (von) muss zwischen null und original.length liegen, einschließlich. Der Wert an original[from] stehende Wert wird in das Anfangselement von der Kopie (es sei denn, from == original.length oder from == to). Werte von nachfolgenden Elementen im Original-Array werden in die in die nachfolgenden Elemente der Kopie eingefügt. Der letzte Index des Bereichs (to), der muss größer als oder gleich from sein, kann größer sein als original.length, In diesem Fall wird 0d in alle Elementen der Kopie, deren Index größer als oder gleich original.length - from. Die Länge der des zurückgegebenen Arrays ist to - from.

Parameter: original - das Array, aus dem von dem ein Bereich kopiert werden soll - dem Anfangsindex des zu kopierenden Bereichs zu kopierenden Bereichs, einschließlich bis - der Endindex des zu kopierenden Bereichs, ausschließlich. (Dieser Index kann außerhalb des Array liegen.)

Rückgabe: ein neues Array das den angegebenen Bereich von dem ursprünglichen Array, abgeschnitten oder [ ] erforderliche Länge

T ArrayIndexOutOfBoundsException - wenn von < 0 oder von > original.length() IllegalArgumentException - wenn ab > bis NullPointerException - wenn original null ist Seit: 1.6

2voto

John Gardner Punkte 22999

Anstatt Elemente zu löschen, warum nicht einfach eine neue Liste mit der kleineren Größe als Ausgabe erstellen und immer index-offset als Index in dieser Liste verwenden?

1voto

Steve Prentice Punkte 22404

Vielleicht würde eine der Arrays.copyOfRange()-Methoden ausreichen?

http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html#copyOfRange(boolesch[], int, int)

1voto

dfb Punkte 13015

Sie können nicht explizit aus einem Array löschen, aber Sie können eine andere Datenstruktur, wie eine ArrayList, verwenden, um die Ergebnisse zu sammeln. In Ihrem Fall möchten Sie vielleicht nur den Code ändern, um die Größe des Arrays korrekt zu bestimmen.

 double[] movingAverage = new double[listLength-offset];

et

    for (int aa = 0; aa < listLength-offset; aa++){

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X