如何将 List 转换为可变参数参数 java

我有一个方法,它使用一个可变长度的字符串(String...)作为参数。我随身带着 List<String>。我如何将它作为参数传递给方法?

78967 次浏览

String...等于 String[] 所以只要把你的 list转换成 String[]就可以了。

如果将列表转换为数组,则 String... 和 String []是相同的。

使用

Foo[] array = list.toArray(new Foo[list.size()]);

或者

Foo[] array = new Foo[list.size()];
list.toArray(array);

然后使用该数组作为函数的 String ...参数。

你可以在 java 8中使用 stream

String[] array = list.stream().toArray(String[]::new);

然后可以在 ...args位置使用该数组。

在 long (基元值)的情况下

long[] longArray = list.stream().mapToLong(o->g.getValue()).toArray();

getValue()返回一个长类型时

对于 Java > 8

你可以非常简单地使用 toArray方法,比如:

String[] myParams = myList.toArray(String[]::new);

当 List 的元素在转换为 Array 之前必须进行转换、筛选或者其他操作时,流变得非常有趣:

String[] myMappedAndFilteredParams = myList.stream()
.map(param -> param + "some_added_stuff")
.filter(param -> param.contains("some very important info"))
.collect(toList())
.toArray(String[]::new);