如何将String数组中的所有项添加到Java中的向量中?

Fra*_*ank 20 java arrays string vector add

我的代码看起来像这样:

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);
Run Code Online (Sandbox Code Playgroud)

但是我收到了一条错误消息,正确的方法是什么,没有循环添加每个项目?

坦率

Chr*_*ung 56

Collections.addAll(myVector, myArray);
Run Code Online (Sandbox Code Playgroud)

这是将数组内容添加到集合(例如向量)中的首选方法.

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

将所有指定的元素添加到指定的集合中.要添加的元素可以单独指定,也可以指定为数组.这种方便方法的行为与c.addAll(Arrays.asList(elements))的行为相同,但在大多数实现中,此方法可能运行得更快.

  • +1 用于纠正我的错字,并提供这种“明显更快”的替代方案。 (2认同)
  • 你确实是对的,但你没有说出为什么它是首选的.Javadoc说:这个方便方法的行为与c.addAll(Arrays.asList(elements))的行为相同,但是在大多数实现中,这种方法可能运行得更快. (2认同)

Yan*_*iot 19

vector.addAll()接受参数中的Collection.要将数组转换为Collection,可以使用Arrays.asList():

My_Vector.addAll(Arrays.asList(My_Array));
Run Code Online (Sandbox Code Playgroud)

  • Chris Jester-Young 的回答(目前投票最高)提供了一个更好的选择。 (2认同)

pol*_*nts 6

My_Vector.addAll(Arrays.asList(My_Array));
Run Code Online (Sandbox Code Playgroud)

如果你注意到,Collection.addAll就会参与Collection进来.Java数组不是Collection,但Arrays.asList与之结合Collection.toArray,是"基于数组和基于集合的API之间的桥梁".

可替代地,用于将来自一个数组元素到的具体目的Collection,还可以使用静态辅助方法addAllCollections类.

Collections.addAll(My_Vector, My_Array);
Run Code Online (Sandbox Code Playgroud)