如何将字符串数组中的所有项目添加到 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<Object> rows = new Vector<Object>();
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 中的向量中?的主要内容,如果未能解决你的问题,请参考以下文章