# Nullen aus Array löschen



## Schaaaf (21. Dez 2011)

Hallo,

ich habe ein Array initialisiert. Leider kann ich die genaue Größe nicht gleich bestimmen und daher wird der nicht benutze Arrayplatz mit Nullen aufgefüllt. Wie werde ich die los bzw. wie kürze ich am Ende, so dass auch nur benutze Stellen des Arrays vorhanden sind?

Danke schon mal.


----------



## irgendjemand (21. Dez 2011)

verwende eine ArrayList


----------



## puelo (21. Dez 2011)

Ein Array kann man nach dem Initialisieren nicht mehr kürzen. 
Du könntest entweder die Stellen die dann wirklich belegt sind zählen, ein neues Array mit der Länge erstellen und alle Werte die != 0 sind in das neue Array kopieren.
Oder du verwendest eine andere Datenstruktur, wo natürlich dann die Frage ist ob sich der Aufwand z.b eine Liste zu erstellen auch lohnt.


----------



## Schaaaf (21. Dez 2011)

Und wie zähle ich die wirklich belegten Stellen des Arrays?


----------



## Michael... (21. Dez 2011)

Schaaaf hat gesagt.:


> Und wie zähle ich die wirklich belegten Stellen des Arrays?


Wenn Du von einem primitiven Array als int, double... Array sprichst, müsstest Du erst definieren was "wirklich belegt" bedeutet. Denn diese Arrays sind grundsätzlich immer voll belegt.

Was spricht denn gegen die Verwendung einer List z.B. ArrayList?


----------



## Schaaaf (21. Dez 2011)

Das wirklich belegt bezieht sich aus puelos aussage... Also überall wo Nullen stehen, ist das Array bei mir nicht belegt.


----------



## stikio (21. Dez 2011)

es wurde dir jetzt 2 mal geraten eine Arraylist zu verwenden, ich rate dir das auch noch einmal, jetzt hast du 3 qualifizierte tipps. Mach was draus und beharr nicht auf deiner ursprungslösung, die scheinbar nicht funktioniert ;-)


----------



## Michael... (21. Dez 2011)

Wenn eine Belegung mit 0 ein Indiz für eine nicht wirkliche Belegung ist, dann kann man ja mit einer Schleife über das Array iterieren und die Belegung prüfen.


----------



## puelo (21. Dez 2011)

Schaaaf hat gesagt.:


> Und wie zähle ich die wirklich belegten Stellen des Arrays?



Wenn die nicht belegten Stellen mit einer "0" belegt sind eventuell so?


```
int a = 0;
for(int i = 0; i < deinArray.length; i++){
   
    if(deinArray[i] != 0){
        a++;
    }
}
```


----------



## bygones (21. Dez 2011)

ich rate dir auch nochmal zu einer Collection...

ansonsten - ist es ein int array - da du von Nullen sprichst.

Im Falle von int wuerde ich eine Zahl nehmen, die definitiv nicht im weiteren Programm ein gueltiger Eintrag ist. Wenn dein Programm bewusst in den Array eine 0 zb setzt und du dass dann spaeter loeschst, ist es bestimmt nicht so gewollt.

Mit einem Array muesstest du einmal komplett ueber den Array laufen und erstmal ermitteln, welche Eintraege gueltig sind.
Damit kannst du einen neuen Array erstellen und nochmals ueber deinen original array laufen und jeden gueltigen Eintrag in den neuen Array schreiben.

Argh - warum schreib ich das alles.... nimm eine Collection !


----------



## Schaaaf (21. Dez 2011)

Okay. Danke, habe ein Array List verwendet.


----------

