如何将List <string>对象转换为String ... Object </string>

时间:2012-01-05 11:17:31

标签: java string

最近我遇到了一个API,它正在使用一些参数

void doSomething(final String... olah) {
}

我从来没有见过这样的东西。

我现在有List<String>,我想用我的字符串列表调用该函数。我怎样才能做到这一点?

5 个答案:

答案 0 :(得分:10)

欢迎使用现代Java。该语法在Java中称为varargs

http://docs.oracle.com/javase/1.5.0/docs/guide/language/varargs.html

您可以将其视为

void doSomething(final String[] olaf) {

}

唯一的区别是顾名思义,它是可变长度参数。您可以使用0将其调用到任何数字或参数。因此,doSomething("foo")doSomething("foo", "bar")doSomething("foo", "bar", "baz")都受到支持。

为了使用List参数调用此方法,您必须先将列表转换为String[]

这样的事情会:

List<String> myList; // Hope you're acquainted with generics?

doSomething(myList.toArray(new String[myList.size()]));

答案 1 :(得分:3)

String...只是String[]。所以只需循环遍历列表并创建一个String数组并传递该数组或更简单的方法来使用Collection类的.toArray(new String[collection.size()])方法。

答案 2 :(得分:2)

String ...与String []相同。

你想打电话给:

String[] listArr = list.toArray( new String[ list.size() ] );
doSomething( listArr );

答案 3 :(得分:1)

使用.toArray(new String[0])toArray()方法会将您的字符串列表(java.util.List<String>)转换为String个对象的数组。

'...'语法是一种允许可变数量参数的机制。您可以传递doSomething("abc", "def", "ghi")doSomething("abc")doSomething(new String[] { "abc", "def", "ghi" })之类的内容。该函数将它们全部视为数组(分别为长度3,1和3)。

答案 4 :(得分:1)

请参阅以下内容将String列表转换为String Array

List<String> listOfString = new ArrayList<String>();
        listOfString.add("sunil");
        listOfString.add("sahoo");
        String[] strResult=new String[listOfString.size()];
        strResult =  listOfString.toArray(strResult);