Java: Add-Funktion selber schreiben?

1 Antwort

Warum iterierst du jedesmal das komplette Array ab, wenn du etwas hinzufügst? Vor allem hast du mit "size" doch eine Variable die genau dazu dienen kann.

Dann ergibt deine if-Abfrage aus meiner Sicht wenig Sinn. Beim Einfügen des ersten Wertes werden alle Zellen des Arrays auf das gleiche Element gesetzt. Beim zweiten Durchgang werden zig Kopien erstellt (jeder Schleifendurchgang eine Kopie), da jede Zelle != 0/NULL ist. Allerdings speicherst du das neu erstellte Array auch nicht.

Beim zweiten Durchgang während des zweiten Durchganges bricht es dann ab, da die aktuelle Größe des Arrays (list) noch dem Ursprungswert (z.B. 10) entspricht, die size aber bereits 11 hat. Er versucht jetzt also ein Array der Größe 10 von 0-10 (11 Werte) zu kopieren.

Bild zum Beitrag

Guck es dir am besten mal in einem Debugger an.

Ein kurz zusammengeworfener Vorschlag:

    public void add(E e) {
        if(size<list.length){
            list[size] = e;
        }
        else{
            E[] newList = (E[]) new Object[capacity + increment];
            System.arraycopy(list,0,newList,0,size-1);
            newList[size] = e;
            capacity+=increment;
            list = newList;
        }
        size++;
    }
}
 - (Computer, programmieren, Java)