如何在Java中将向量转换为字符串数组

17

如何在Java中将包含字符串的向量(Vector)转换为字符串数组?


你到目前为止尝试了哪些不同的方法? - r15habh
7个回答

26

9
使用new String[vector.size()]会有更好的性能表现,因为new String[0]将被丢弃。 - Dorus
1
@Dorus:你有任何实际的基准测试来证明这一点吗? - NPE
2
不,这是基于Javadoc的:“如果集合适合指定的数组,则将其返回。否则,将使用指定数组的运行时类型和此集合的大小分配新数组。”我的基准测试表明new String [0]更快羞愧 羞愧 - Dorus
1
当集合为空并且您将其设置为常量时,new String[0]速度更快(因为所有类型的空数组基本上是相等的)。否则,使用实际的size()会稍微快一些。 - Peter Lawrey
P.S. 你为什么更喜欢使用Vector而不是ArrayList?也许他没有选择。难道你从来没有更新或使用过你没有编写的代码吗? - Abu Sulaiman

14
Vector<String> vector = new Vector<String>();
String[] strings = vector.toArray(new String[vector.size()]);
请注意,将正确大小的数组 new String[vector.size()] 传递给方法更有效率,因为这样方法将使用该数组。如果传入 new String[0],则会丢弃该数组。
以下是描述此行为的 javadoc 摘录: Parameters:
a - 如果足够大,则将该列表的元素存储到其中的数组;否则,将为此目的分配一个新的具有相同运行时类型的数组。

我刚刚尝试了一下,看起来 new String[0] 在某种程度上更快。糟糕 :) - Dorus
@Dorus - 我不知道你尝试了什么,但我所说的仍然是真实的 - 请参考编辑后的问题中的javadoc参考。 - Bohemian

3

以下是一个简单的示例:

Vector<String> v = new Vector<String>();
String [] s = v.toArray(new String[v.size()]);

3

最简单的方法是使用String [] myArray = myVector.toArray(new String[0]);

。这个方法可以将一个向量转换成一个字符串数组。

1

试试这个例子

  Vector token
  String[] criteria = new String[tokenVector.size()];
  tokenVector.toArray(criteria);

0

试试这个:

vector.toArray(new String[0]);

编辑:我刚试了一下,new String[vector.size()]new String[0]慢。所以请忽略我之前关于vector.size()的说法。String[0]写起来也更短。


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