Arrays vergrössern

Wie mach ich das?

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

Arrays vergrössern
Wie vergrößere ich Arrays? Die alten Werte, die im Array gespeichert sind sollen erhalten bleiben!! Ich hab kein Befehl gefunden!


Beim Suchen nach Methoden der Array-Klasse:

die kann ja schon einen binarySearch() oder sort() machen! Wozu müssen wir das dann implementieren? :-p

BTW, aus der Beschreibung der sort()-Methode:

Wär doch mal einen Blick wert, hm?

Aber ich hab sonst auch nix gefunden, womit das ginge. Da man die Größe im Konstruktor angeben muss, wird man dafür wohl auch nicht um die Erstellung eines neuen Array-Objekts herum kommen. Musst halt nachher aller erstmal reinkopieren, oder deinen Algorithmus so anpassen, dass er vom Quell- ins Ziel-Array arbeitet.


Das wollte ich eigentlich vermeiden :-/
aber danke :slight_smile:


liegt ja in der Natur von Arrays das ihre Größe bei Erstellung statisch festgelegt wird.


ich glaube es gibt eine klasse namens Vector, die dynamisch erweitert werden kann. allerdings erfolgt bei der natuerlich der zugriff wieder anders als bei normalen arrays. mehr dazu in der java-api.


Japp, Arrays sind statisch, Vektoren lassen sich dynamisch vergrössern/verkleinern.

Vektoren haben allerdings den Nachteil, dass du ihnen keinen Typ zuweit, sie können einfach jedes Objekt aufnehmen (bzw. die Referenz darauf ;)). D.h. wenn du das Objekt von Stelle x des Vektors wieder rausholst musst du ihn in den benötigten Typ “casten”.

Wer lieber arrayt der kann sich ja einfach eine “verdoppel-die-groesse” Klasse zu schreiben, die aufgerufen wird falls das Array voll ist und eine Referenz auf das neue (doppelt so grosse) Array zurückliefert.


Oder man benutzt einen Vector und wenn man den unbedingt als Array braucht, wandelt man ihn einfach in einen um :slight_smile:

Alternative zu nicht erweiterbaren Arrays: verkettete Listen :slight_smile:


Genau, nimm halt die ArrayList-Klasse… muss man zwar glaub ich auch casten, aber die Länge ist variabel. Und über dieses Iterator-Interface sollte der Zugriff recht einfach sein.


aehm, hab ich das bloss falsch verstanden, oder war das mit den Iteratoren eigentlich nix andersch als ne liste durchhangeln und zeiger neu setzen ? weil wenn, dann ist dein Vorschlag, Yves, aus betrachtung des zugriffaufwands heraus net so toll. da musst ja um so auf diesem listen array vieh rumzuschreiben doch dann auch noch ne funktion schreiben die ne angabe der Speicherstelle (blah[x]) verarbeitet und sich entsprechend an der liste entlanghangelt oder ?


siehe: http://uni.unclassified.de/forum/thread.php?id=783