2010-03-04 6 views
20

Mein Code sieht wie folgt aus:Wie fügen Sie alle Elemente in einem String-Array zu einem Vektor in Java hinzu?

Vector<String> My_Vector=new Vector<String>(); 
String My_Array[]=new String[100]; 

for (int i=0;i<100;i++) My_Array[i]="Item_"+i; 
...... 
My_Vector.addAll(My_Array); 

Aber ich bekam eine Fehlermeldung, was ist der richtige Weg, es zu tun, ohne jedes Element hinzufügen zu Looping?

Frank

+0

Warum sind Sie Vector mit? Ich würde eine ArrayList bevorzugen, da sie standardmäßig nicht synchronisiert ist. – duffymo

+2

Verwenden Sie nicht Vector, es ist eine Legacy-Klasse, verwenden Sie stattdessen ArrayList. Und verwenden Sie einfach 'My_Vector.add (" Item _ "+ i);' anstelle eines Zwischenarrays –

+0

Wow. Ich habe keinen Vector in mindestens 5 Jahren gesehen. :) Bringt mich zurück zu JDK 1.1. Wahrscheinlich möchten Sie mit Collections.synchronizedList (new ArrayList()) gehen. – sidereal

Antwort

17

Die vector.addAll() übernimmt eine Collection in Parameter. Um Array-Sammlung zu konvertieren, können Sie Arrays.asList() verwenden:

My_Vector.addAll(Arrays.asList(My_Array)); 
+1

Chris Jester-Young Antwort (derzeit die Top-Abstimmung) bietet eine bessere Alternative. – espinchi

6
My_Vector.addAll(Arrays.asList(My_Array)); 

Wenn Sie bemerken, nimmt Collection.addAll ein Collection Argument. Ein Java-Array ist kein Collection, aber Arrays.asList, in Kombination mit Collection.toArray, ist die "Brücke zwischen Array-basierten und Sammlung-basierten APIs".

Alternativ können Sie für den speziellen Zweck des Hinzufügens von Elementen aus einem Array zu einer Collection auch die statische Hilfsmethode addAll aus der Klasse Collections verwenden.

Collections.addAll(My_Vector, My_Array); 
55
Collections.addAll(myVector, myArray); 

Dies ist der bevorzugte Weg, um den Inhalt eines Feldes in einer Sammlung (wie ein Vektor) hinzuzufügen.

https://docs.oracle.com/javase/8/docs/api/java/util/Collections.html#addAll-java.util.Collection-T...-

Fügt alle spezifizierten Elemente in der angegebenen Sammlung. Elemente, die hinzugefügt werden sollen, können einzeln oder als Array angegeben werden. Das Verhalten dieser Komfortmethode ist identisch mit dem von c.addAll (Arrays.asList (Elemente)), aber diese Methode wird wahrscheinlich wesentlich schneller unter den meisten Implementierungen ausgeführt.

+1

+1 für korrigiere meinen Tippfehler und biete diese "deutlich schnellere" Alternative an. – polygenelubricants

+0

Die Implementierung dieser Methode wird Schleife: 'für (T-Element: Elemente)'. – Pindatjuh

+2

Sie sind zwar richtig, aber Sie haben nicht gesagt, warum es bevorzugt wird. Das Javadoc sagt: das Verhalten dieser Bequemlichkeitsmethode ist identisch mit dem von c.addAll (Arrays.asList (elements)), aber diese Methode wird wahrscheinlich unter den meisten Implementierungen wesentlich schneller laufen. –

Verwandte Themen