Ich möchte wissen, ob es sicher / ratsam ist, von ArrayList zu Array zu konvertieren. Ich habe eine Textdatei mit jeder Zeile eine Zeichenfolge:
1236
1233
4566
4568
....
Ich möchte sie in eine Array-Liste einlesen und sie dann in ein Array konvertieren. Ist es ratsam / legal, das zu tun?
Vielen Dank
Antworten:
Ja, es ist sicher, ein
ArrayList
in ein umzuwandelnArray
. Ob dies eine gute Idee ist, hängt von Ihrem Verwendungszweck ab. Benötigen Sie die Operationen, dieArrayList
bereitstellt? Wenn ja, behalten Sie esArrayList
. Sonst konvertieren weg!Ausgänge
quelle
The method toArray(T[]) in the type ArrayList<Character> is not applicable for the arguments (char[])
Dies ist der beste Weg (IMHO).
Dieser Code funktioniert auch:
Aber es ist weniger effektiv: Das String-Array wird zweimal erstellt: Wenn zum ersten Mal ein Array mit der Länge Null erstellt wird, wird das Array in realer Größe erstellt, gefüllt und zurückgegeben. Wenn Sie also die erforderliche Größe (von
list.size()
) kennen, sollten Sie ein Array erstellen, das groß genug ist, um alle Elemente zu platzieren. In diesem Fall wird es nicht neu zugewiesen.quelle
new String[0]
undnew String[size]
new String[0]
ist eigentlich effizienter. shipilev.net/blog/2016/arrays-wisdom-ancientsOb es sich um eine "gute Idee" handelt, hängt wirklich von Ihrem Anwendungsfall ab.
quelle
Object
Angenommen, v ist eine ArrayList:
quelle
Es gibt zwei Stile, um eine Sammlung in ein Array zu konvertieren: entweder mit einem Array mit Vorgröße (wie
c.toArray(new String[c.size()])
) oder mit einem leeren Array (wiec.toArray(new String[0])
). In älteren Java-Versionen wurde die Verwendung eines vorgefertigten Arrays empfohlen, da der Reflection-Aufruf, der zum Erstellen eines Arrays mit der richtigen Größe erforderlich ist, recht langsam war. Seit den späten Aktualisierungen von OpenJDK 6 war dieser Aufruf jedoch nicht mehr gültig, sodass die Leistung der leeren Array-Version im Vergleich zur vorgroßen Version gleich und manchmal sogar noch besser war. Das Übergeben eines Arrays mit vorgroßer Größe ist für eine gleichzeitige oder synchronisierte Sammlung gefährlich, da ein Datenrennen zwischen der Größe und dem toArray-Aufruf möglich ist, was zu zusätzlichen Nullen am Ende des Arrays führen kann, wenn die Sammlung während des Vorgangs gleichzeitig verkleinert wurde. Sie können dem einheitlichen Stil folgen:Verwenden Sie entweder ein leeres Array (was in modernem Java empfohlen wird) oder ein Array mit einer Vorgröße (das in älteren Java-Versionen oder nicht auf HotSpot basierenden JVMs möglicherweise schneller ist) .quelle
Dies ist die empfohlene Verwendung für neueres Java (> Java 6).
quelle
Die Collection-Schnittstelle enthält die toArray () -Methode zum Konvertieren einer neuen Collection in ein Array. Es gibt zwei Formen dieser Methode. Die Version ohne Argument gibt die Elemente der Auflistung in einem Object-Array zurück: public Object [] toArray (). Das zurückgegebene Array kann nicht in einen anderen Datentyp umgewandelt werden. Dies ist die einfachste Version. In der zweiten Version müssen Sie den Datentyp des Arrays übergeben, das Sie zurückgeben möchten: public Object [] toArray (Object type []).
Als Referenz siehe diesen Link http://techno-terminal.blogspot.in/2015/11/how-to-obtain-array-from-arraylist.html
quelle
Ein Ansatz wäre, die zweite for-Schleife hinzuzufügen, bei der der Druck innerhalb der ersten for-Schleife erfolgt. So was:
quelle
Es hängt davon ab, was Sie erreichen möchten, wenn Sie das Array später bearbeiten müssen. Dies würde mehr Aufwand kosten, als die Zeichenfolge in der ArrayList zu belassen. Sie haben auch wahlfreien Zugriff mit einer ArrayList von
list.get( index );
quelle