首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将ArrayList传递给varargs方法参数?

如何将ArrayList传递给varargs方法参数?
EN

Stack Overflow用户
提问于 2012-03-26 04:26:25
回答 4查看 169.7K关注 0票数 289

基本上,我有一个位置的ArrayList:

代码语言:javascript
复制
ArrayList<WorldLocation> locations = new ArrayList<WorldLocation>();

在此下面,我调用了以下方法:

代码语言:javascript
复制
.getMap();

getMap()方法中的参数为:

代码语言:javascript
复制
getMap(WorldLocation... locations)

我遇到的问题是,我不确定如何将整个locations列表传递给该方法。

我试过了

代码语言:javascript
复制
.getMap(locations.toArray())

但getMap不接受这一点,因为它不接受Objects[]。

现在如果我使用

代码语言:javascript
复制
.getMap(locations.get(0));

它将完美地工作。但我需要以某种方式通过所有的位置...当然,我可以继续添加locations.get(1), locations.get(2)等,但是数组的大小是不同的。我只是不习惯ArrayList的整个概念

做这件事最简单的方法是什么?我觉得我现在想得不够清楚。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-26 04:27:58

源文:Passing a list as an argument to a vararg method

使用toArray(T[] arr)方法。

代码语言:javascript
复制
.getMap(locations.toArray(new WorldLocation[0]))

下面是一个完整的示例:

代码语言:javascript
复制
public static void method(String... strs) {
    for (String s : strs)
        System.out.println(s);
}

...
    List<String> strs = new ArrayList<String>();
    strs.add("hello");
    strs.add("world");
    
    method(strs.toArray(new String[0]));
    //     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
票数 402
EN

Stack Overflow用户

发布于 2018-03-23 19:31:17

在Java 8中:

代码语言:javascript
复制
List<WorldLocation> locations = new ArrayList<>();

.getMap(locations.stream().toArray(WorldLocation[]::new));
票数 62
EN

Stack Overflow用户

发布于 2018-01-21 09:52:52

使用Guava的接受答案的较短版本:

代码语言:javascript
复制
.getMap(Iterables.toArray(locations, WorldLocation.class));

可以通过静态导入toArray进一步缩短:

代码语言:javascript
复制
import static com.google.common.collect.toArray;
// ...

    .getMap(toArray(locations, WorldLocation.class));
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9863742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档