2010-03-04 6 views
20

Mon code ressemble à ceci:Comment ajouter tous les éléments d'un tableau String à un vecteur Java?

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); 

Mais je reçu un message d'erreur, ce qui est la bonne façon de le faire, sans boucle pour ajouter chaque élément?

Frank

+0

Pourquoi utilisez-vous Vector? Je préférerais une ArrayList, car elle n'est pas synchronisée par défaut. – duffymo

+2

N'utilisez pas Vector, c'est une classe héritée, utilisez plutôt ArrayList. Et juste utiliser 'My_Vector.add (" Item _ "+ i);' au lieu d'utiliser un tableau intermédiaire –

+0

Wow. Je n'ai pas vu un vecteur retiré dans au moins 5 ans. :) Cela me ramène à JDK 1.1. Vous voulez probablement aller avec Collections.synchronizedList (new ArrayList()). – sidereal

Répondre

17

Le vecteur.addAll() prend une collection en paramètre. Afin de convertir ensemble à la collection, vous pouvez utiliser Arrays.asList():

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

Chris Jester-Young réponse (actuellement le plus voté) offre une meilleure alternative. – espinchi

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

Si vous remarquez, Collection.addAll prend un argument Collection. Un tableau Java n'est pas un Collection, mais Arrays.asList, en combinaison avec Collection.toArray, constitue le «pont entre les API basées sur des baies et sur des collections».

Vous pouvez également utiliser la méthode auxiliaire statique addAll de la classe Collections dans le but spécifique d'ajouter des éléments d'un tableau à Collection.

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

Ceci est le meilleur moyen d'ajouter le contenu d'un tableau dans une collection (comme un vecteur).

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

ajoute tous les éléments spécifiés à la collection spécifiée. Les éléments à ajouter peuvent être spécifiés individuellement ou sous forme de tableau. Le comportement de cette méthode de commodité est identique à celui de c.addAll (Arrays.asList (elements)), mais cette méthode est susceptible d'exécuter significativement plus rapidement dans la plupart des implémentations.

+1

+1 for corriger ma faute de frappe, et fournir cette alternative "nettement plus rapide". – polygenelubricants

+0

L'implémentation de cette méthode va boucler: 'pour (élément T: éléments)'. – Pindatjuh

+2

Vous avez en effet raison, mais vous n'avez pas dit pourquoi il est préféré. Le Javadoc dit: le comportement de cette méthode de commodité est identique à celui de c.addAll (Arrays.asList (elements)), mais cette méthode est susceptible de fonctionner beaucoup plus rapidement sous la plupart des implémentations. –

Questions connexes