我有一个方法,它使用一个可变长度的字符串(String...)作为参数。我随身带着 List<String>。我如何将它作为参数传递给方法?
List<String>
String...等于 String[] 所以只要把你的 list转换成 String[]就可以了。
String...
String[]
list
如果将列表转换为数组,则 String... 和 String []是相同的。
使用
Foo[] array = list.toArray(new Foo[list.size()]);
或者
Foo[] array = new Foo[list.size()]; list.toArray(array);
然后使用该数组作为函数的 String ...参数。
String ...
你可以在 java 8中使用 stream。
stream
String[] array = list.stream().toArray(String[]::new);
然后可以在 ...args位置使用该数组。
...args
在 long (基元值)的情况下
long[] longArray = list.stream().mapToLong(o->g.getValue()).toArray();
当 getValue()返回一个长类型时
getValue()
对于 Java > 8
你可以非常简单地使用 toArray方法,比如:
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);