Entweder:
Foo[] array = list.toArray(new Foo[0]);
o:
Foo[] array = new Foo[list.size()];
list.toArray(array); // fill the array
Beachten Sie, dass dies nur für Arrays von Referenztypen funktioniert. Für Arrays von primitiven Typen, verwenden Sie die traditionelle Weise:
List<Integer> list = ...;
int[] array = new int[list.size()];
for(int i = 0; i < list.size(); i++) array[i] = list.get(i);
Aktualisierung:
Es wird nun empfohlen, Folgendes zu verwenden list.toArray(new Foo[0]);
pas list.toArray(new Foo[list.size()]);
.
Von JetBrains Intellij Idea Inspektion:
Es gibt zwei Möglichkeiten, eine Sammlung in ein Array zu konvertieren: entweder mit ein vordefiniertes Array (wie c.toArray(new String[c.size()]) ) oder mit einem leeren Array (wie c.toArray(new String[0]) .
Unter älteren Java-Versionen wurde die Verwendung von Arrays mit vorgegebener Größe empfohlen, da der Reflection-Aufruf, der notwendig ist, um ein Array der richtigen Größe zu recht langsam war. Seit späten Updates von OpenJDK 6 wurde dieser Aufruf jedoch wurde dieser Aufruf integriert, wodurch die Leistung der leeren Array-Version gleich und manchmal sogar besser ist, als die Version mit vordefinierter Version. Auch die Übergabe eines Arrays mit vorgegebener Größe ist gefährlich für eine gleichzeitige oder synchronisierte Auflistung gefährlich, da ein Datenwettlauf zwischen den Größe y toArray Aufruf, der zu zusätzlichen Nullen führen kann am Ende des Arrays, wenn die Sammlung gleichzeitig verkleinert wurde während der Operation verkleinert wurde.
Diese Inspektion ermöglicht die Verfolgung der einheitlichen Stil zu folgen: entweder mit einem leeren Array (was in modernem Java empfohlen wird) Java empfohlen wird) oder die Verwendung eines Arrays mit vorgegebener Größe (was in älteren Java-Versionen oder nicht-HotSpot-basierten JVMs).
19 Stimmen
ArrayList ist kein Array. Tienda[] würde ein Array sein.