List von Integer nach int[] konvertieren?
Olaf
- java
0 Olaf
Hi,
ich weiß nicht, ob ich mit dieser Frage hier richtig bin, aber ich find dieses Forum einfach sooo gut, dass ichs trotzdem versuche.
Ich bin auf Java 1.4 angewiesen und hab ne "List" gefüllt mit "Integer"-Objekten. Diese will ich nun in ein "int[]" überführen. Geht das auch eleganter als ein Array mit der Größe der Liste neu zu erstellen und alle Inhalte entsprechend als int rüberzuschaufeln? Die Arrays.toArray(...)-Methode helfen da auch nichts, gell?
Grüße,
Olaf
Ich meinte natürlich die Collections.toArray(...)
Hallo Olaf,
Ich meinte natürlich die Collections.toArray(...)
Nein, diesen Weg gibt es nicht. Aber rate mal, was die Funktion Collection.toArray(...) eigentlich macht - richtig, sie geht mit einer Schleife durch die einzelnen Objekte und gibt sie letztlich als Array zurück.
Wie wäre es, wenn du dir selbst eine Methode mit der Signatur int[] getIntArray(Collection<Integer>)
schreiben würdest?
Natürlich solltest du dabei beachten, dass in einer Collection auch null-Werte vorkommen können.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hej,
Nein, diesen Weg gibt es nicht. Aber rate mal, was die Funktion Collection.toArray(...) eigentlich macht - richtig, sie geht mit einer Schleife durch die einzelnen Objekte und gibt sie letztlich als Array zurück.
Collection.toArray() und Collection.toArray( Object[] o ) sind abstrakt und geben keine Implementierung vor. Aber zumindest die Implementierungen von ArrayList und Vector verwenden zudem System.arraycopy(), was weil es nativ ist deutlich performanter sein sollte als es in Java per for-Schleife zu druchlaufen.
Beste Grüße
Biesterfeld
Hallo Biesterfeld,
Nein, diesen Weg gibt es nicht. Aber rate mal, was die Funktion Collection.toArray(...) eigentlich macht - richtig, sie geht mit einer Schleife durch die einzelnen Objekte und gibt sie letztlich als Array zurück.
Collection.toArray() und Collection.toArray( Object[] o ) sind abstrakt und geben keine Implementierung vor. Aber zumindest die Implementierungen von ArrayList und Vector verwenden zudem System.arraycopy(), was weil es nativ ist deutlich performanter sein sollte als es in Java per for-Schleife zu druchlaufen.
Ah ja, gut zu wissen - wieder etwas dazugelernt.
Allerdings ist die Funktion natürlich nur für Objekte gedacht, eine gleichzeitige Konvertierung von Integer nach int ist AFAIS nicht möglich.
Grüße
Marc Reichelt || http://www.marcreichelt.de/
Hej,
Allerdings ist die Funktion natürlich nur für Objekte gedacht,
Naja, ein int[] ist natürlich auch ein Objekt. Und System.arraycopy() funktioniert übrigens auch für native Arrays von primitiven Typen. Dennoch müssen sowohl Ziel- wie auch Quellarray Typkompatibel sein und eben weil, arraycopy() native ist, funktioniert hier offensichtlich auch kein Autoboxing.
eine gleichzeitige Konvertierung von Integer nach int ist AFAIS nicht möglich.
Schade eigentlich, kann mich gut erinnern, auch mal nach genau dieser Möglichkeit gesucht zu haben. Aber umso länger ich drüber nachdenke, umso mehr erscheint es mir sinnvoll. Ein int ist eben -- vom Autoboxing abgesehen, das ist m.E. ein dreckiger Hack -- kein Object. Deswegen kann es auch kein Integer sein.
Beste Grüße
Biesterfeld