views:

333

answers:

3

My code looks like this :

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

But I got an error message, what's the right way to do it, without looping to add each item ?

Frank

+4  A: 
My_Vector.addAll(Arrays.asList(My_Array));

If you notice, Collection.addAll takes a Collection argument. A Java array is not a Collection, but Arrays.asList, in combination with Collection.toArray, is the "bridge between array-based and collection-based APIs".

Alternatively, for the specific purpose of adding elements from an array to a Collection, you can also use the static helper method addAll from the Collections class.

Collections.addAll(My_Vector, My_Array);
polygenelubricants
+8  A: 
Collections.addAll(myVector, myArray);

This is the preferred way to add the contents of an array into a collection (such as a vector).

Chris Jester-Young
+1 for correcting my typo, and providing this "significantly faster" alternative.
polygenelubricants
The implementation of that method will loop: `for (T element : elements)`.
Pindatjuh
You are indeed correct, but you didn't say why it is is preferred. The Javadoc says: the behavior of this convenience method is identical to that of c.addAll(Arrays.asList(elements)), but this method is likely to run significantly faster under most implementations.
Dean Povey
@Dean: You are correct (that I didn't say why it was preferred): I was going for a "Fastest Gun in the West" answer, but indeed, the added performance is why it's preferred.
Chris Jester-Young
+1  A: 

Hi, The vector.addAll()takes a Collection in parameter. In order to convert array to Collection, you can use Arrays.asList():

My_Vector.addAll(Arrays.asList(My_Array));
Yannick L.