Convert ArrayList
zu Array
Sie haben würden eine Anfangsgröße erraten und dann das Array der Größe, wie Sie das letzte Element füllen, je nach Bedarf zu wiederholen, wie Sie durch Ihre Ergebnismenge gehen.
Dieses Verhalten ist genau das, was ArrayList
Ihnen bereits gibt. Aber schon ausgetestet. ;-)
Also einfach ArrayList<Integer>
verwenden. Am Ende in ein Array konvertieren.
Sie könnten denken, Collection::toArray
zu verwenden. Aber dieses Dienstprogramm kann nur ein Array von Objekten zurückgeben, keine Primitive.
Siehe this Question, für mehrere gute Möglichkeiten, um in Array von Primitiven zu konvertieren.
Meine Wahl würde Google Guava anrufen. Während das Hinzufügen von Guava für diesen einen Zweck möglicherweise zu viel ist, ist Guava so nützlich, dass ich die Bibliothek standardmäßig zu den meisten neuen Java-Projekten hinzufüge.
List<Integer> list = ... ;
int[] values = Ints.toArray(list) ;
Wenn die Implementierungsumgebung waren extrem eng auf dem Gedächtnis, oder wenn Sie eine sehr große Anzahl von Elementen haben, oder wenn Sie diesen Vorgang zu tun wurden wie so oft die Leistung zu beeinflussen, würde ich nur dann greifen, um Abfüll- und -resize ein Array int
manuell selbst.
Hallo, Sie können [Apache Common Lang] (http://commons.apache.org/proper/commons-lang/) verwenden, um ein Array von int zuzuweisen: 'int [] intArray = ArrayUtils.toPrimitive (ints. toArray (new Integer [ints.size()])); ' –
@gjeanmart aber machen sie intern nicht das Gleiche? Ich würde eine ganze Bibliothek einschließen (und neue Klassen laden), nur um ein paar Zeilen Code zu machen: https://github.com/apache/common-lang/blob/master/src/main/java/org/ apache/commons/lang3/ArrayUtils.java –
@DonRhummy: Sie haben Recht der [Code ist ziemlich ähnlich] (https://commons.apache.org/proper/commons-lang/apidocs/src-html/org/apache/commons /lang3/ArrayUtils.html). Andernfalls, wenn Sie Java-8 verwenden, können Sie die Stream-API wie folgt versuchen: int [] intArray = ints.stream(). MapToInt (i -> i) .toArray(); ' –