如何在Java中将字符串数组中的所有项添加到向量中?

22
我的代码是这样的:
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);

但是我收到了错误消息,有没有不需要循环添加每个项目的正确方法?

Frank


为什么你在使用Vector?我更喜欢ArrayList,因为它默认情况下不是同步的。 - duffymo
2
不要使用Vector,它是一个遗留类,请改用ArrayList。而且只需使用My_Vector.add("Item_"+i);,而不是使用中间数组。 - Christopher Oezbek
哇,我至少五年没见到有人使用 Vector了 :) 这让我回想起 JDK 1.1时代。你可能想使用 Collections.synchronizedList(new ArrayList())。 - sidereal
对于对象的向量和数组:Vector<Object> rows = new Vector<Object>(); Object[] labels = new Object[columnCount]; 以下方法可行:rows.add(labels); - KNU
3个回答

61

2
+1 修正我的拼写错误,并提供这个“显著更快”的替代方案。 - polygenelubricants
该方法的实现将循环:for (T element: elements) - Pindatjuh
2
你说得没错,但你没有说为什么它更受欢迎。Javadoc说:这个便利方法的行为与c.addAll(Arrays.asList(elements))相同,但在大多数实现中,这个方法可能会运行得更快。 - Dean Povey
@Dean:你说得对(我没有解释为什么它更受欢迎):我是想给出一个“西部最快枪手”的答案,但确实,增加的性能是为什么它更受欢迎的原因。 - C. K. Young

20

vector.addAll()方法的参数为Collection类型。

如果需要将数组转换为Collection类型,可以使用Arrays.asList()方法:

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

2
Chris Jester-Young的回答(目前得票最高)提供了更好的替代方案。 - espinchi

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

如果你注意到了,Collection.addAll需要一个Collection参数。Java数组不是Collection,但是Arrays.asListCollection.toArray的结合体是“基于数组和基于集合的API之间的桥梁”。
另外,为了将元素从数组添加到Collection中,还可以使用Collections类的静态帮助方法addAll
Collections.addAll(My_Vector, My_Array);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接