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

Posted

技术标签:

【中文标题】如何将字符串数组中的所有项目添加到 Java 中的向量中?【英文标题】:How to add all items in a String array to a vector in Java? 【发布时间】:2011-01-23 22:14:30 【问题描述】:

我的代码如下所示:

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

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

弗兰克

【问题讨论】:

你为什么使用 Vector?我更喜欢 ArrayList,因为它默认不同步。 不要使用 Vector,它是一个遗留类,使用 ArrayList 代替。并且只需使用My_Vector.add("Item_"+i); 而不是使用中间数组 哇。我至少有 5 年没有看到一个 Vector 被拉出来了。 :) 让我回到 JDK 1.1。您可能想使用 Collections.synchronizedList(new ArrayList())。 对于向量和对象数组:Vector&lt;Object&gt; rows = new Vector&lt;Object&gt;();Object[] labels = new Object[columnCount]; 以下方法有效:rows.add(labels); 【参考方案1】:
Collections.addAll(myVector, myArray);

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

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

将所有指定元素添加到指定集合。 要添加的元素可以单独指定,也可以作为数组指定。这 这种便捷方法的行为与 c.addAll(Arrays.asList(elements)),但是这个方法很可能会运行 在大多数实现下明显更快。

【讨论】:

+1 用于纠正我的错字,并提供这种“明显更快”的替代方案。 该方法的实现将循环:for (T element : elements). 你确实是对的,但你没有说为什么它是首选。 Javadoc 说:这种便捷方法的行为与 c.addAll(Arrays.asList(elements)) 的行为相同,但在大多数实现下,这种方法可能运行得更快。 @Dean:你是对的(我没有说为什么首选它):我想要一个“西方最快的枪”的答案,但实际上,增加的性能就是它的原因首选。【参考方案2】:

vector.addAll() 接受一个 Collection in 参数。 为了将数组转换为集合,您可以使用 Arrays.asList():

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

【讨论】:

Chris Jester-Young 的回答(目前票数最高)提供了更好的选择。【参考方案3】:
My_Vector.addAll(Arrays.asList(My_Array));

如果您注意到,Collection.addAll 会采用 Collection 参数。 Java 数组不是Collection,而是Arrays.asList,结合Collection.toArray,是“基于数组和基于集合的API 之间的桥梁”。

或者,对于将数组中的元素添加到Collection 的特定目的,您还可以使用Collections 类中的静态帮助方法addAll

Collections.addAll(My_Vector, My_Array);

【讨论】:

以上是关于如何将字符串数组中的所有项目添加到 Java 中的向量中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将foreach中的元素添加到数组中

从java项目的资源文件夹中获取所有文件名

我们如何将数组从java传递到oracle中的存储过程

如何从字符串 ArrayList 在字符串数组中的随机位置添加元素。在 Android Java 中

Java ArrayList clear() 函数

如何有效地将项目添加到 Chrome 存储 API 中的数组?